我有以下JS对象:
var data_test = { foo: [], bar: [ 'baz' ] };
当我通过jQuery.ajax()
提交此对象时:
$.ajax({
url: "test.php",
type: "POST",
data: data_test
});
事实证明只发送了bar
数组,而不是foo
数组。
证明:在 test.php 中我只是var_dump
编辑$_REQUEST
:
array(1) {
["bar"]=>
array(1) {
[0]=>
string(3) "baz"
}
}
是否可以强制jQuery也提交空对象属性?我需要jQuery发送data_test
对象的精确副本,如果它省略了破坏我逻辑的空值!
答案 0 :(得分:15)
游戏稍晚(非常),但我想指出,如果您的应用程序已准备好接受JSON,您可以使用JSON.stringify发送空数组:
var data_test = { foo: [], bar: [ 'baz' ] };
$.ajax({
url: "test.php",
type: "POST",
data: JSON.stringify(data_test),
contentType: 'application/json'
});
这应该发布空数组。请注意,从IE8开始可以使用JSON.stringify
,但您始终可以使用json.js填补这一空白。
答案 1 :(得分:0)
为什么不设置空数组....你甚至可以用这种方式创建函数....
function __validate(obj) {
for(key in obj) {
if(obj[key].length == 0) {
obj[key] = [""];
}
}
return obj;
}
data_test = __validate(data_test);
现在,如果您将看到,您将获得确切的结构。 然而正如@lonesomeday所说,没有jQuery方法可以做到这一点。