jQuery.ajax()省略了“空”对象属性
我有以下JS对象:
var data_test = { foo: [], bar: [ 'baz' ] };
当我通过jQuery.ajax()
提交此对象时:
$.ajax({ url: "test.php", type: "POST", data: data_test });
事实certificate只发送了bar
数组,而不是foo
数组。
certificate:在test.php中,我只需var_dump
ed $_REQUEST
:
array(1) { ["bar"]=> array(1) { [0]=> string(3) "baz" } }
是否有可能强制jQuery也提交一个空对象属性? 我需要jQuery发送data_test
对象的精确副本,如果它省略了破坏我的逻辑的空值!
游戏稍晚(非常),但我想指出,如果您的应用程序已准备好接受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填补这个空白。
为什么不设置空数组….你甚至可以这样做一个函数….
function __validate(obj) { for(key in obj) { if(obj[key].length == 0) { obj[key] = [""]; } } return obj; } data_test = __validate(data_test);
现在,如果您将看到,您将获得确切的结构。 然而正如@lonesomeday正确地说的那样,没有jQuery方法可以做到这一点。