Javascript 如何在服务器部件中取消序列化JSON数据
我有一个简单的表单,我尝试使用JSON格式的jQueryPost发布它。表单正在发布,但我的问题是PHP部分。我无法得到数据。从另一个堆栈问题中,我找到了只做Javascript 如何在服务器部件中取消序列化JSON数据,javascript,php,jquery,json,jquery-events,Javascript,Php,Jquery,Json,Jquery Events,我有一个简单的表单,我尝试使用JSON格式的jQueryPost发布它。表单正在发布,但我的问题是PHP部分。我无法得到数据。从另一个堆栈问题中,我找到了只做$\u POST['FirstName']的解决方案,但我得到的结果是“FirstName=john&LastName=plar&Address=home&PhoneNumber=23423”。 我如何解码这个JSON数据?下面是我迄今为止尝试过的代码。多谢各位 <form action="user.php" method="post
$\u POST['FirstName']
的解决方案,但我得到的结果是“FirstName=john&LastName=plar&Address=home&PhoneNumber=23423”。
我如何解码这个JSON数据?下面是我迄今为止尝试过的代码。多谢各位
<form action="user.php" method="post" id="myForm">
First Name: <input type="text" name="FirstName" />
Last Name: <input type="text" name="LastName" />
Address: <input type="text" name="Address" />
Phone: <input type="text" name="PhoneNumber" />
<input type="submit" id="submit" value="Submit"/>
</form>
<script>
$("#submit").on('click', function(e){
e.preventDefault();
var data = $("#myForm input").serialize();
$.post('user.php',{"data":JSON.stringify(data)},function(data){
},'json');
})
</script>
您根本不需要使用JSON,只需要使用表单
$("#submit").on('click', function(e){
e.preventDefault();
$.post(
'user.php',
$("#myForm").serialize(),
function(data, textStatus){
// do stuff with the response
}
);
});
然后在PHP中
<?php
echo $_POST["FirstName"];
// etc
您根本不需要使用JSON,只需使用表单即可
$("#submit").on('click', function(e){
e.preventDefault();
$.post(
'user.php',
$("#myForm").serialize(),
function(data, textStatus){
// do stuff with the response
}
);
});
然后在PHP中
<?php
echo $_POST["FirstName"];
// etc
您可以对脚本和PHP代码进行一些更改,以获取不需要取消序列化的本机$\u POST数据:
更改脚本以使数据过帐只是您的序列化表单:
$("#submit").on('click', function(e){
e.preventDefault();
$.post('user.php',{$("#myForm").serialize()},function(data){});
});
在PHP代码中,只需转储$\u POST变量:
var_dump($_POST);
你可以得到这个结果:
array(4) {
["FirstName"]=>
string(7) "b j hhj"
["LastName"]=>
string(7) "bhjbhj "
["Address"]=>
string(5) "jhjjh"
["PhoneNumber"]=>
string(0) ""
}
这将比多次序列化和取消序列化更有效。您可以对脚本和PHP代码进行一些更改,以获得不需要取消序列化的本机$\u POST数据:
更改脚本以使数据过帐只是您的序列化表单:
$("#submit").on('click', function(e){
e.preventDefault();
$.post('user.php',{$("#myForm").serialize()},function(data){});
});
在PHP代码中,只需转储$\u POST变量:
var_dump($_POST);
你可以得到这个结果:
array(4) {
["FirstName"]=>
string(7) "b j hhj"
["LastName"]=>
string(7) "bhjbhj "
["Address"]=>
string(5) "jhjjh"
["PhoneNumber"]=>
string(0) ""
}
这将比多次序列化和取消序列化更有效。当我尝试您的方法时,它运行良好。但是当我使用var data=$(“#myForm”).serialize()时;$.post('user.php',{'data':data},函数(data){});为什么它不起作用。因为这不是提交表格的方式!您正在尝试将序列化表单作为字符串传递。当我尝试您的方法时,它工作正常。但是当我使用var data=$(“#myForm”).serialize()时;$.post('user.php',{'data':data},函数(data){});为什么它不起作用。因为这不是提交表格的方式!您正在尝试将序列化表单作为字符串传递。