Я уже читал эти вопросы, но ни один из них не отвечает на мои потребности:
(последний сказал, что просто добавьте жестко закодированные кавычки, т.е. ['']
но я не могу этого сделать, я вызываю функцию, которая возвращает массив)
Итак, вот мой код (обратите внимание, что проблема заключается в пустом массиве 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(...)
Это явно означает, что когда есть пустой массив () для отправки, он игнорируется и не добавляется в переменные 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
Я хочу, чтобы массив был отправлен, даже если он пуст (= отправить []
)!
Любое решение? Любая идея? Я уже пытался добавить эту опцию традиционный: true
безуспешно.