javascript - jQuery、AJAX、JSONP : how to actually s

我已经阅读了这些问题,但没有一个能满足我的需要:

  • 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 没有成功。

最佳答案

问题是你不能真正发送空数组。您是否尝试过手动发送一个空数组?该 uri 看起来如何(注意与 POST 的推理相同)?

/path?arr[]

这将导致像这样的 $_GET:

array (
 'arr' => array (
    0 => ''
  )
)

这不是一个真正的空数组,是吗?它是一个包含单个空字符串元素的数组。所以 jQuery 所做的,我同意这是处理它的正确方法,就是不发送任何东西。

这实际上非常简单,您可以在服务器上进行检查。只需添加一个额外的检查参数是否存在,即:

$tabs = array();
if(isset($_POST['tab'])) {
  $tabs = $_POST['tab'];
}

关于javascript - jQuery、AJAX、JSONP : how to actually send an array even if it's empty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9397669/

相关文章:

json - Spring Boot Actuator 端点的 pretty-print JSON

python - datetime.date(2014, 4, 25) 在 Django 中不是 J

c# - 如何在 WebAPI 后端 C# 上接收 JSON 数据?

ajax - jquery mobile可折叠和galaxy tab 10.1 json响应给出随机

php - Laravel 5 Controller 将 JSON 整数作为字符串发送

javascript - JSON.stringify 抛出 RangeError : Invali

python - Django:使用 Javascript 在我的模板中解析 JSON

php - json_encode 不使用 html 字符串作为值

javascript - 如何将输入文件对象序列化为 JSON?

ruby - 将 json 解析为对象 ruby