我已经阅读过这些问题,但没有一个能满足我的需求:
(最新的一个说只是添加硬编码的引号,['']但我不能这样做,我正在调用一个返回数组的函数)
所以这是我的代码(注意问题在于空数组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');
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
简单呃?这是我的Php代码:
echo '_POST='.var_export($_POST,true)."\n";
Run Code Online (Sandbox Code Playgroud)
这是结果:
_POST=array (
)
jQuery1710713708313414827_1329923973282(...)
Run Code Online (Sandbox Code Playgroud)
如果我将空数组更改为非空,即:
'tab':new Array({ 't':'u' },{ 'v':'w' })
Run Code Online (Sandbox Code Playgroud)
结果是:
_POST=array (
'tab' =>
array (
0 =>
array (
't' => 'u', …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
$.post('block_ajax.php'
, { 'action': 'set_layout'
, 'listid': 123
, 'layout': []
}
, function(data) {
// ...
}
);
Run Code Online (Sandbox Code Playgroud)
接收脚本(block_ajax.php)仅接收"action"和"listid"参数.当我检查使用Chrome发送的内容时,我看到"layout"参数甚至没有发送到后端脚本.
由于空数组与缺少数组之间存在差异,我想让JQuery发送空数组.我可以找到一些迹象表明JQuery(1.6.1)似乎是这样做的,但不是如何阻止它这样做.JSON格式允许空数组和空对象,所以我认为它应该是可能的.
有人知道要改变什么,所以JQuery可以发送空数组吗?