【问题标题】:Passing arrays in ajax call using jQuery 1.4使用 jQuery 1.4 在 ajax 调用中传递数组
【发布时间】:2010-02-03 21:11:16
【问题描述】:

以下代码适用于我使用 jQuery 1.2.6,但在 1.4 中会导致代理错误。

var items = new Array();
items[0] = "Item 1";
items[1] = "Item 2";
items[2] = "Item 3";

var dataToSend = {'_service' : myService, '_program' : myProgram, 'selections' : items} ;

$.ajax({    
 type: "post",
 url: myURL,
 dataType: "text",
 data: dataToSend,
 success: function(request) {$('#results').html(request); } // End success
}); // End ajax method

我得到的代理错误表明在选择中传递的是“选择[]”

错误:(字段名称“selections[]”中的字符“[”无效。字段名称中不允许使用此字符。)

jQuery 在 ajax 调用中处理数组的方式是否发生了变化?或者这是传递数组的错误方式?

任何帮助将不胜感激。

编辑:@jvenema 的回答解决了我的问题。使用“传统”设置,您可以使 jQuery 像以前的版本一样处理参数。这里有一些关于更改jQuery.ajax()jQuery.param() 和博客文章jQuery 1.4 $.param demystified 的附加链接。

一般性陈述

jQuery.ajaxSettings.traditional = true;

或作为 ajax 调用中的附加选项

$.ajax({    
 traditional: true,
 type: "post",
 url: myURL,
 dataType: "text",
 data: dataToSend,
 success: function(request) {
   $('#results').html(request);
 }  // End success
}); // End ajax method

【问题讨论】:

    标签: jquery


    【解决方案1】:

    jQuery 1.4 已更新为使用 PHP 语法发送数组。您可以使用以下命令将其切换为旧样式:

    jQuery.ajaxSetting.traditional = true;
    

    详情请见here

    【讨论】:

    • 另外,您应该提及为单个 Ajax 调用执行此操作的方法:将 traditional:true 添加到 $.Ajax 对象。
    • 有什么办法可以用getJSON() 得到这个结果,还是我必须用ajax()
    【解决方案2】:

    您可以将数组指定为Json数组。

    'selections' : {items : ['Item 1', 'Item 2', 'Item 3']}
    

    我认为这也可以。

    'selections' : {items : items}
    

    查看here 以获取更多资源。

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 2017-08-25
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多