私が見てきたことから、JSONの要点を見逃しているかどうかはわかりません。チュートリアル、例、および質問には、JSON/AJAX を介して PHP にフォーム データを送信することは含まれません。
jQueryを使った例をたくさん見ますが、私はまだjQueryを学んでいません.
フォーム データを「収集」し、JSON 構文であると思われる文字列を処理して出力できます。
"{p1:{'lname':'adsfer','fname':'asdf','email':'ewrt','sex':'male'},p2:{'lname':'erty','fname':'erty','email':'erty','sex':'male'}}"
HTML
<form id="p1">
<h2>Add Person 1:</h3>
Surname: <input type='text' name='lname' value='' ><br>
First Name:<input type='text' name='fname' value='' ><br>
Email: <input type='email' name='email' value=''><br>
Sex:<select name='sex'><option></option><option value='male'>Male</option><option value='female'>Female</option></select>
</form>
<form id="p2">
<h2>Add Person 2:</h3>
Surname: <input type='text' name='lname' value='' ><br>
First Name:<input type='text' name='fname' value='' ><br>
Email: <input type='email' name='email' value=''><br>
Sex:<select name='sex'><option></option><option value='male'>Male</option><option value='female'>Female</option></select>
</form>
<button onclick='submit_forms()'>Next</button>
Javascript
function submit_forms(){
var div = "content";
var url = "contract.php";
var forms = document.forms;
var txt = "{";
for(var i = 0 ;i<forms.length;i++){
txt += forms[i].id + ':{';
for(var n=0;n<forms[0].length;n++){
txt += "'" + forms[i][n].name + "':'" + forms[i][n].value +"',";
}
txt = txt.substring(0,txt.length-1);
txt += '},';
}
txt = txt.substring(0,txt.length-1);
txt +='}';
txt = JSON.stringify(txt);
alert(txt)
post_JSON_PHP(txt,div,url);
}
function post_JSON_PHP(vars,div,url){
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(div).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST",url,true);
xmlhttp.setRequestHeader("Content-type", "application/JSON");
xmlhttp.send(vars);
}
PHP
$json = json_decode($_POST['p1']);
var_dump($json);
PHP は Notice: Undefined index: p1 for line and NULL で応答します。
構文が間違っているだけですか、それとも完全に間違った方向に進んでいますか?