Я уже прочитал эти вопросы, но никто из них не ответил на мои потребности:
- Тестирование для пустого объекта массива в JSON с помощью jQuery
- jQuery 1.4.4+ AJAX-запрос - пустой пустой массив или объект становится строкой
- Невозможно получить доступ к данным из запроса jQuery Ajax, возвращает пустой массив
- JQuery удаляет пустые массивы при отправке
(последний сказал, что просто добавьте закодированные кавычки, т.е. ['']
, но я не могу этого сделать, я вызываю функцию, возвращающую массив)
Итак, вот мой код (обратите внимание, что проблема кроется в пустом массиве 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 - из последней версии CDN i.e.:
http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
и
http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js
Я хочу, чтобы массив отправлялся, даже если он пуст (= send []
)!
Любое решение? Есть идеи? Я уже пытался добавить эту опцию traditional: true
без успеха.