将数组传递给 $.ajax() 中的 ajax 请求 [重复]

Posted

技术标签:

【中文标题】将数组传递给 $.ajax() 中的 ajax 请求 [重复]【英文标题】:Pass array to ajax request in $.ajax() [duplicate] 【发布时间】: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);
  
);

我该怎么做?

【问题讨论】:

解决方案:***.com/questions/713884/… type: 'POST', url: '/url/action/', data: param1: 1, id: "text" , dataType: 'text', 【参考方案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 实际上不会自动序列化任何数组。当我尝试使用简单的整数数组时,它只保留了最后一项。请查看此帖子以获取更多说明:***.com/a/4239496/261332 谢谢@userfuser 我已经更新了答案并删除了自动序列化部分。 这怎么会有这么多赞?没有像jQuery.serialize() 这样的jQuery 函数。有.serialize(),但它旨在用于一组表单元素。试试这段代码,你只会得到TypeError: $.serialize is not a function 这对你有什么作用? @MunkhdelgerTumenbayar 看到答复日期了吗?

以上是关于将数组传递给 $.ajax() 中的 ajax 请求 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将数组从ajax调用传递给控制器​​,控制器中的数组为空

如何使用 ajax 传递 from.serialize() 和数组值?

将c#集合序列化为视图中的jquery数组以通过ajax方法传递给控制器

使用jQuery AJAX将字符串数组传递给具有可变数量参数的webmethod

使用 ajax 导入 JS 数组以传递给 JQuery 中的函数/插件

如何将 Struts 2 动作类中的 InputStream 值传递给 JSP 页面中的 Ajax 并将该值转换为 JSON 数组