9

我有以下 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对象的精确副本,如果它忽略了打破我逻辑的空值!

4

2 回答 2

20

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

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

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

这应该发布空数组。请注意,JSON.stringify它从 IE8 开始可用,但您始终可以使用json.js来填补这个空白。

于 2014-05-26T21:57:16.020 回答
0

为什么不直接设置空数组……你甚至可以用这种方式创建一个函数……

function __validate(obj) {

 for(key in obj) {

  if(obj[key].length == 0) {
    obj[key] = [""];
  }

 }

return obj;
}

data_test = __validate(data_test);

现在,如果你会看到,你会得到确切的结构。然而正如@lonesomeday 正确所说,没有jQuery 方法可以做到这一点。

于 2013-02-21T10:57:06.167 回答