Javascript jQuery 1.4.4+;AJAX请求-post空数组或对象变为字符串
我有一个Javascript中的对象,我正试图将它发布到PHP脚本中。jQuery1.4.1中的所有内容都有效,但现在在1.4.4或更高版本中,所有空数组或空对象都以字符串(0)的形式到达,这是不正确的 JS:Javascript jQuery 1.4.4+;AJAX请求-post空数组或对象变为字符串,javascript,jquery,ajax,json,post,Javascript,Jquery,Ajax,Json,Post,我有一个Javascript中的对象,我正试图将它发布到PHP脚本中。jQuery1.4.1中的所有内容都有效,但现在在1.4.4或更高版本中,所有空数组或空对象都以字符串(0)的形式到达,这是不正确的 JS: $(document).ready(function() { var obj = {}; obj.one = []; obj.two = {}; obj.three = []; obj.three.push('one'); obj.three.push('two'); obj.three
$(document).ready(function() {
var obj = {};
obj.one = [];
obj.two = {};
obj.three = [];
obj.three.push('one');
obj.three.push('two');
obj.three.push('three');
obj.four = "onetwothree";
$.ajax({
type: 'POST',
url: 'ajax.php',
data: obj,
success: function(data) {
alert(data);
},
});
});
<?php
var_dump($_POST);
?>
array(4) {
["one"]=> string(0) ""
["two"]=> string(0) ""
["three"]=> array(3) {
[0]=> string(3) "one"
[1]=> string(3) "two"
[2]=> string(5) "three"
}
["four"]=> string(11) "onetwothree"
}
PHP:
$(document).ready(function() {
var obj = {};
obj.one = [];
obj.two = {};
obj.three = [];
obj.three.push('one');
obj.three.push('two');
obj.three.push('three');
obj.four = "onetwothree";
$.ajax({
type: 'POST',
url: 'ajax.php',
data: obj,
success: function(data) {
alert(data);
},
});
});
<?php
var_dump($_POST);
?>
array(4) {
["one"]=> string(0) ""
["two"]=> string(0) ""
["three"]=> array(3) {
[0]=> string(3) "one"
[1]=> string(3) "two"
[2]=> string(5) "three"
}
["four"]=> string(11) "onetwothree"
}
在版本1.4.1中,它不会发送[“一”]或[“两”],但现在在较新的版本中,它以字符串的形式到达这一事实会使整个应用程序受到影响。我能做些什么,使空数组([])以空数组([])的形式到达PHP,并与JavaScript对象相同吗?尝试将
传统的
选项设置为true
:
$.ajax({
type: 'POST',
traditional: true,
url: 'ajax.php',
data: obj,
success: function(data) {
alert(data);
}
});
查看的数据
和传统
选项
如果希望在IE7中工作,请在
成功
回调后删除多余的逗号。尝试对传递的参数应用JSON.stringify
data: JSON.stringify ( obj ),
注意:您可能希望包含contentType:“application/json”
选项,以提示服务器端正确处理数据
引述:
传统:true是完全错误的,因为它永远无法处理对象层次结构。取而代之的是:…&key=[object object],这是javascript对所有对象的toString()默认结果
谢谢你,Karim79,我试着将传统的转换为true,但是空数组和对象仍然是字符串(0),但是现在我的嵌套数组变成了[object object].Hi。你找到这个问题的解决办法了吗?我对此也很感兴趣。在我看到你的帖子之前,我已经发布了。