【问题标题】:Pass array to ajax request in $.ajax() [duplicate]将数组传递给 $.ajax() 中的 ajax 请求 [重复]
【发布时间】:2012-02-12 00:21:20
【问题描述】:

我想发送一个数组作为 Ajax 请求:

info[0] = 'hi';
info[1] = 'hello';

$.ajax({
  type: "POST",
  url: "index.php",
  success: function(msg){
    $('.answer').html(msg);
  }
});

我该怎么做?

【问题讨论】:

标签: jquery ajax arrays json


【解决方案1】:
info = [];
info[0] = 'hi';
info[1] = 'hello';


$.ajax({
   type: "POST",
   data: {info:info},
   url: "index.php",
   success: function(msg){
     $('.answer').html(msg);
   }
});

【讨论】:

  • 是的...那行得通..谢谢..还有一件事可以做...那就是初始化 info = {}; 然后 data: info ,
  • 它发送 0=hi&1=hello,它会工作吗?取决于您的服务器端代码。 info = {} 是 Javascript 中的普通对象。 info = [] 是一个数组对象。
  • 如果你想要info=arrayasvalues而不是每个键都是一个参数,你会怎么做?
  • 你的意思是 info=0,1 吗?
  • 我正在这样做,我的 C# 控制器同时具有 List<string>string[] 参数,但在这两种情况下,过去的数组最终都是第一个以逗号分隔的字符串List<string>string[] 参数的元素。有什么想法吗?
【解决方案2】:

只需使用 JSON.stringify 方法并将其作为 $.ajax 函数的“数据”参数传递,如下所示:

$.ajax({
    type: "POST",
    url: "index.php",
    dataType: "json",
    data: JSON.stringify({ paramName: info }),
    success: function(msg){
        $('.answer').html(msg);
    }
});

您只需要确保在您的页面中包含 JSON2.js 文件...

【讨论】:

  • 我需要添加JSON.stringify(...) 感谢您的帮助!
  • 在我的例子中,请求的键值映射在上面的代码中是错误的。我将“数据”行更改为: data: { paramName: JSON.stringify(info)},
  • 我试过这个,我的 C# 控制器同时具有 List<string>string[] 参数,但在这两种情况下,过去的数组最终都是第一个元素中的一个逗号分隔的字符串List<string>string[] 参数。有什么想法吗?
  • @Joe 尝试在 $.ajax 调用中将 dataType 指定为“application/json”。如果您使用的是 Web API,请确保使用 [FromBody] 属性将参数装饰到控制器,以便正确反序列化。
  • C#中需要反序列化 JsonSerializer.Deserialize (params)
【解决方案3】:

注意:不适用于较新版本的 jQuery。

由于您使用的是jQuery,请使用它的seralize函数来序列化数据,然后将其传递给ajax调用的data参数:

info[0] = 'hi';
info[1] = 'hello';

var data_to_send = $.serialize(info);

$.ajax({
    type: "POST",
    url: "index.php",
    data: data_to_send,
    success: function(msg){
        $('.answer').html(msg);
    }
});

【讨论】:

  • 这不是全部,至少今天不是。 jQuery 实际上不会自动序列化任何数组。当我尝试使用简单的整数数组时,它只保留了最后一项。请查看此帖子以获取更多说明:stackoverflow.com/a/4239496/261332
  • 谢谢@userfuser 我已经更新了答案并删除了自动序列化部分。
  • 这怎么会有这么多赞?没有像jQuery.serialize() 这样的jQuery 函数。有.serialize(),但它旨在用于一组表单元素。试试这段代码,你只会得到TypeError: $.serialize is not a function
  • 这对你有什么作用?
  • @MunkhdelgerTumenbayar 看到答复日期了吗?
猜你喜欢
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 2023-03-17
  • 2018-02-02
  • 2020-10-02
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
相关资源
最近更新 更多