Prova questo. Sono sicuro che ci sono soluzioni migliori.
codice HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
function invia(){
var arr = new Array();
var elm = document.getElementById("myform").elements.length;
for (i=0;i<elm;i++) {
nam = document.getElementById("myform").elements[i].name;
val = document.getElementById("myform").elements[i].value;
val = val.replace(/\"/g,'\\"');
alert(val);
arr[i] = '"'+nam+'":"'+val+'"';
}
var xxx = arr.join();
param = '{'+xxx+'}';
$.ajax({
url : 'test9065b.php',
type : 'POST',
data : 'param=' + param,
dataType : 'html'
}).done(function(html) {$('#log').html(html)}) ;
}
//-->
</script>
</head>
<body>
<form method="post" id="myform">
<input type="text" name="b[1]" /><br />
<input type="text" name="b[2]" /><br />
<input type="text" name="b[3]" /><br />
<input type="text" name="b[4]" /><br />
<input type="text" name="pippo" /><br />
</form>
<input type="button" value='Invia' onclick='invia()' />
<div id='log'></div>
</body>
</html>
file test9065b.php
Codice PHP:
<?php
$array = json_decode($_POST['param'],true);
foreach ($array as $key => $value) {
print "$key => $value <br/>";
}
?>