将数组传递给 $.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注意:不适用于较新版本的 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 传递 from.serialize() 和数组值?
将c#集合序列化为视图中的jquery数组以通过ajax方法传递给控制器
使用jQuery AJAX将字符串数组传递给具有可变数量参数的webmethod
使用 ajax 导入 JS 数组以传递给 JQuery 中的函数/插件
如何将 Struts 2 动作类中的 InputStream 值传递给 JSP 页面中的 Ajax 并将该值转换为 JSON 数组