【发布时间】:2012-03-12 22:48:40
【问题描述】:
我已经阅读了这些问题,但没有一个能满足我的需要:
- Testing for an empty array object in JSON with jQuery
- jQuery 1.4.4+ AJAX request - post empty array or object becomes string
- Cannot access data from jQuery Ajax request, returns empty array
- JQuery removes empty arrays when sending
(最新的说只是添加硬编码引号,即[''],但我不能这样做,我正在调用一个返回数组的函数)
这是我的代码(注意问题出在空数组new Array()):
function AjaxSend() {
$.ajax({
url: '/json/myurl/',
type: 'POST',
dataType: 'jsonp',
data : { 'tab':new Array() },
context: this,
success: function (data) {
if (data.success) {
console.log('ok');
}
else {
console.log('error');
}
}
});
}
简单吧? 这是我的 PHP 代码:
echo '_POST='.var_export($_POST,true)."\n";
结果如下:
_POST=array (
)
jQuery1710713708313414827_1329923973282(...)
如果我将空数组更改为非空,即:
'tab':new Array({ 't':'u' },{ 'v':'w' })
结果是:
_POST=array (
'tab' =>
array (
0 =>
array (
't' => 'u',
),
1 =>
array (
'v' => 'w',
),
),
)
jQuery1710640656704781577_1329923761425(...)
所以这显然意味着当有一个空的 Array() 被发送时,它会被忽略,并且它不会被添加到 POST 变量中。
我错过了什么吗?
PS:我的 jQuery 版本来自最新的 google CDN,即:
http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
和
http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js
我希望发送数组,即使它是空的(= 发送 [])!
有什么解决办法吗?任何想法?我已经尝试添加此选项traditional: true,但没有成功。
【问题讨论】:
-
你有没有想过发送一个包含数组长度的单独变量?当长度为零时,数组为空。您可以使用此检查,而不是尝试解释帖子中缺少的数组变量。
-
@FelixKling 你是对的,这给出了相同(异常)的结果。
标签: javascript jquery json