jQuery, AJAX, JSONP: как на самом деле отправить массив, даже если он пуст?

Я уже читал эти вопросы, но ни один из них не отвечает на мои потребности:

(последний сказал, что просто добавьте жестко закодированные кавычки, т.е. [''] но я не могу этого сделать, я вызываю функцию, которая возвращает массив)

Итак, вот мой код (обратите внимание, что проблема заключается в пустом массиве 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 безуспешно.

27
задан Community 23 May 2017 в 11:54
поделиться