Javascript 无法访问通过jQuery.serialize()接收的数组索引
好的,我正在尝试通过Javascript 无法访问通过jQuery.serialize()接收的数组索引,javascript,php,jquery,Javascript,Php,Jquery,好的,我正在尝试通过jqueryserialize获取表单值。这是我的jQuery代码 $("#add_cus_button").click(function(e){ e.preventDefault(); // $.ajax({ type: 'POST', url:'ajax.php?requestid=14', data:{postdata:$("form#addnew").serialize()}, s
jqueryserialize
获取表单值。这是我的jQuery代码
$("#add_cus_button").click(function(e){
e.preventDefault();
//
$.ajax({
type: 'POST',
url:'ajax.php?requestid=14',
data:{postdata:$("form#addnew").serialize()},
success: function(response)
{
}
})
});
以下是我的PHP:-
$postdata = explode('&', $_POST['postdata']);
var_dump($postdata);
这导致:-
现在,如果我尝试访问名为customer\u name
的字段,我会这样做
echo $postdata['requestid'];
但这会引发未定义的索引错误。如何克服这个问题?.seriliaze()
将返回一个字符串,比如a=something&b=whatever…
,它在GET请求中工作,而不是在POST请求中需要的数组或对象
要使其返回数组,请使用.serializeArray()
,但即使serializeArray
也无法在POST请求中工作。因此,您需要使用类似于.serializeObject()
的东西
大概是这样的:
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
只要用这个:
data: $("form#addnew").serialize()
这已经是一个序列化版本。您不需要添加{key:serialized_value}
。或者,如果您确实想使用数据
对象,请使用serializeArray()
并将其发送到PHP,但在PHP中,不要使用以下行:
$postdata = explode('&', $_POST['postdata']); // Don't use this.
1st:您需要使用
data:$("form#addnew").serialize(),
2nd:如果此序列化看起来像这样
"varname=val&var2=val2"
在php中
<?php
echo $_POST["varname"];
echo $_POST["var2"];
?>
查看一下Akshay,或者关闭xdebug
,或者请以HTML的形式发布输出。警报
毫无价值。让我们看看“网络”选项卡中有什么?requestid真的是访问客户名称的方式吗?这听起来像是你的PHP得到了一个未定义的索引错误,因为它应该是$postdata['customer\u name']
该死!我想要这个,只是使用了一个额外的变量来发送数据。谢谢,伙计。@Akshay没问题,伙计。如果我的回答对你有用的话,确保你在10分钟后接受我的回答。不确定是谁投了反对票。如果有人无缘无故地投了反对票,我感到很沮丧。