好吧,我试图通过jQuery serialize
获取表单值。这是我的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_name
的字段,我会这样做。
echo $postdata['requestid'];
但这会引发未定义的索引错误。我该如何克服这个问题?
答案 0 :(得分:1)
.seriliaze()
会返回string
like a=something&b=whatever...
,并且会在GET请求中返回,而不是在POST中需要的array
或object
请求。
要使其返回数组,请使用.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;
};
答案 1 :(得分:0)
请使用:
data: $("form#addnew").serialize()
这已经是序列化版本。您不需要添加{key: serialized_value}
。或者,如果您真的想使用data
对象,请使用serializeArray()
并将其发送给PHP,但在PHP中,请不要使用以下行:
$postdata = explode('&', $_POST['postdata']); // Don't use this.
答案 2 :(得分:0)
1st:您需要使用
data:$("form#addnew").serialize(),
2nd:如果此序列化看起来像这样
"varname=val&var2=val2"
在php中
<?php
echo $_POST["varname"];
echo $_POST["var2"];
?>