我不确定我是否错过了 JSON 的要点,因为据我所见;教程、示例和问题不涉及通过 JSON/AJAX 将表单数据发布到 PHP。
我看到很多使用 jQuery 的示例,但我还没有学习 jQuery,因为有人告诉我,最好先了解 Javascript,然后再使用 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 回复通知:未定义索引:p1 表示行和 NULL。
只是我有一些错误的语法还是我完全走错了路?