【发布时间】:2014-05-11 13:12:59
【问题描述】:
这是我的 AJAX 请求
$(document).ready(function(){
$("#register-submit").click(function(){
var formdata = {hotelname: $('#hotelName').val(), contactType: $('#contactType').val(), contactNumber: $('#contactNumber').val(), addrOne: $('#addrLineOne').val(), addrTwo: $('#addrLineTwo').val(),cityName: $('#cityName').val(), stateName: $('#stateName').val(),localityName: $('#localityName').val(), pincode: $('#pincode').val(), managerName: $('#mngrName').val(), managerEmail: $('#mngrEmail').val(), managerPhone: $('#mngrPhone').val()}
jQuery.ajax({
url: "../api/v1/admin/ch_partialBusinessRegister.php",
data: JSON.stringify(formdata),
type: "POST",
async: false,
success: function(res) {
var result = res.Result;
if(result.success === true)
{
alert("Random Password is Generated : "+res.Result.password);
window.location.reload();
}
else
alert("Registration Failed. "+res.Result.msg);
}
});
});
});
在我的 ch_partialBusinessRegister.php 中
$inputJson = file_get_contents('php://input');
$post_vars = json_decode($inputJson, true);
$businessName = $post_vars['hotelname'];
$address1 = $post_vars['addrOne'];
$address2 = $post_vars['addrTwo'];
$locality = $post_vars['localityName'];
$city = $post_vars['cityName'];
$state = $post_vars['stateName'];
$zip = $post_vars['pincode'];
$mName = $post_vars['managerName'];
$mEmail = $post_vars['managerEmail'];
$mPhone = $post_vars['managerPhone'];
能够获取数据并将其成功传递到 POST 参数中。但是当我将表单数据更改为
$(document).ready(function(){
$("#register-submit").click(function(){
var formdata = $('form').serializeArray();
jQuery.ajax({
url: "../api/v1/admin/ch_partialBusinessRegister.php",
data: JSON.stringify(formdata),
type: "POST",
async: false,
success: function(res) {
var result = res.Result;
if(result.success === true)
{
alert("Random Password is Generated : "+res.Result.password);
window.location.reload();
}
else
alert("Registration Failed. "+res.Result.msg);
}
});
});
});
然后 JSON.stringify 它,它通过像这样的 POST 参数发送变量
[{"name":"hotelName","value":"test"},{"name":"contactType","value":"LandLine"},{"name":"contactNumber[]","value":""},{"name":"AddrOne","value":"test"},{"name":"addrTwo","value":"test"},{"name":"pincode","value":"test"},{"name":"mngrName","value":"test"},{"name":"mngrEmail","value":"test"},{"name":"mngrPhone","value":"test"}]
但在 PHP 中它不读取值。
如果我用同样的方法
var mydata = $('form').serialize();
data: JSON.stringify(mydata)
它发布此数据,但 PHP 不读取
"hotelName=&contactType=LandLine&contactNumber%5B%5D=&AddrOne=&addrTwo=&pincode=&mngrName=test&mngrEmail=test&mngrPhone=test"
【问题讨论】:
-
$('form').serialize();??? -
是的,我只是通过jQuery序列化HTML表单
-
但是在这里您使用的是
serializeArray(),那么为什么不使用serialize()并为每个输入使用相关的名称属性呢? -
@A.Wolff 使用 serialize() 及其 POST 数据更新了问题。 Serialize 和 serializeArray 都不适合我
-
hotelName!=hotelname开始修复它,所有属性都一样name
标签: jquery json post serialization