当前位置: 首页 > 面试题库 >

jQuery,AJAX,JSONP:即使数组为空,如何实际发送数组?

施德元
2023-03-14
问题内容

(最新的说只是添加硬编码的引号,即,['']但是我做不到,我正在调用一个返回数组的函数)

所以这是我的代码(请注意,问题出在空数组 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

我希望发送数组,即使它为空(= send [] )!有什么办法吗?任何想法?我已经尝试添加此选项,traditional: true但没有成功。


问题答案:

问题是您不能真正发送空数组。您是否尝试过手动发送一个空数组?该uri的外观如何(请注意,这与POST的原因相同)?

/path?arr[]

这将导致像这样的$ _GET:

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

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

实际上,这对于您在服务器上进行检查非常简单。只需额外检查该参数是否存在,即:

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


 类似资料:
  • 问题内容: 我想使用jQuery将JavaScript数组发送到servlet 。 当我使用 它返回空值。 如何访问这些值? 问题答案: 将数组作为JS对象的值发送,因此最终得到。 在servlet中,您需要在请求参数名称后加上。 jQuery附加了它们以便对弱类型语言(如PHP)友好。

  • 问题内容: 我是Struts 2的新手。我想使用jQuery AJAX请求将javascript数组发送到Struts动作类。 警报运行正常,但没有运行。 当我把 在方法,输出 语言:。 这是我的动作课 问题答案: 当使用进行ajax请求时,jQuery 内部使用参数序列化发送的数据。 数据应设置为整数数组或带有逗号分隔的整数列表的字符串,因此jQuery可以在发送请求之前正确序列化它。 您只能通

  • 问题内容: 我试图将数组作为ajax请求的一部分发送,如下所示: 我想看看我在servlet中得到了什么,所以我使用了这一行: 返回表示空地图。 Firebug告诉我我遇到错误 如果我像这样发送一个queryString 作为“数据”,那么一切工作正常,因此它与无法按原样发送数组有关。我要怎么做才能将该数据放入servlet进行进一步处理。如果可以避免,我不想将其拉出并变成JS中的queryStr

  • 问题内容: 我正在尝试使用j查询$ .ajax方法向我的php脚本发送多个数据,但是当我连接多个数据时我只能传递单个数据我的php脚本tat中出现未定义的索引错误,意味着发出了ajax请求,但没有数据发送,我需要知道如何格式化多个数据以依次将其发送到名称为vale对的处理脚本中,这是我写的 问题答案: 您可以创建一个键/值对的对象,jQuery将为您完成其余工作: 这样,数据将被自动正确编码。如果

  • 问题内容: 我有一个带有很多表单字段(12 xn行)的表单。每行中的第一个字段(代表产品)是一个类似于以下内容的复选框: 每个复选框的值都是唯一的。 我正在尝试将检查后的值发送到PHP脚本以通过Ajax进行处理。我遇到的问题是将ID正确获取到服务器。我尝试使用以下几种方法: 和 但是这些都会导致在服务器上获取此信息: 我可以序列化整个表单并将其发送过来,但是这可能导致发送的许多数据将不被使用。 如

  • 问题内容: 我有以下代码: 接收脚本(block_ajax.php)仅接收“ action”和“ listid”参数。当我检查使用Chrome发送的内容时,我发现“ layout”参数甚至没有发送到后端脚本。 由于空数组与缺少数组之间存在差异,因此我想让JQuery发送空数组。我发现一些迹象表明JQuery(1.6.1)似乎可以做到这一点,但没有办法阻止它这样做。JSON格式允许使用空数组和空对象