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分钟后接受我的回答。不确定是谁投了反对票。如果有人无缘无故地投了反对票,我感到很沮丧。