jQuery.ajax()省略了"空"对象属性

Lou*_* B. 5 jquery

我有以下JS对象:

var data_test = { foo: [], bar: [ 'baz' ] };
Run Code Online (Sandbox Code Playgroud)

当我通过jQuery.ajax()以下提交此对象时:

$.ajax({
    url: "test.php",
    type: "POST",
    data: data_test
});
Run Code Online (Sandbox Code Playgroud)

事实证明只bar发送了数组,而不是那个foo.

证明:在test.php中我简单地var_dump编辑了$_REQUEST:

array(1) {
  ["bar"]=>
  array(1) {
    [0]=>
    string(3) "baz"
  }
}
Run Code Online (Sandbox Code Playgroud)

是否有可能强制jQuery也提交一个空对象属性?我需要jQuery发送data_test对象的精确副本,如果它省略了破坏我的逻辑的空值!

enr*_*rez 15

游戏有点(非常)晚,但我想指出,如果您的应用程序已准备好接受JSON,您可以使用JSON.stringify发送空数组:

var data_test = { foo: [], bar: [ 'baz' ] };

$.ajax({
    url: "test.php",
    type: "POST",
    data: JSON.stringify(data_test),
    contentType: 'application/json'
});
Run Code Online (Sandbox Code Playgroud)

这应该发布空数组.请注意JSON.stringify从IE8开始可用,但你总是可以使用json.js填补这个空白.