如何通过jQuery+Ajax将数组作为参数传递给服务器方法
本文关键字:参数传递 服务器 方法 何通过 jQuery+Ajax 数组 | 更新日期: 2023-09-27 17:51:19
我正在Asp开发一个web应用程序。Net和背后的代码我使用c#。我已经成功地编写了代码来传递一个类对象到方法后面的代码,但我想知道如何通过ajax和jQuery传递一个数组作为参数。
我试过了,但是没有用。这是我的代码,我试图运行
function Test(){
var argu = [1, 2];
$.ajax({
type: 'POST',
url: 'MyPage.aspx/Foo',
data: '{args: ' + argu + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
// Success
},
error: function (response) {
// Failed
}
});
}
这是我的代码背后的方法是用c#写的。
[WebMethod]
[ScriptMethod]
public static bool Foo(int[] args)
{
return true;
}
应用程序已成功构建。我已经把断点,但我的代码背后的方法不火。我想知道问题出在哪里?我还遗漏了什么?
所有的代码看起来都足够好,但是我认为问题是在你的代码中传递data
。
应该是这样的。
data: '{args: ' + JSON.Stringify(argu) + '}'
最后你的代码应该像
function Test(){
var argu = [1, 2];
$.ajax({
type: 'POST',
url: 'MyPage.aspx/Foo',
data: '{args: ' + JSON.Stringify(argu) + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
// Success
},
error: function (response) {
// Failed
}
});
}
希望对你有帮助。
问题在哪里?
你发送的是无效的JSON当你设置contentType: "application/json; charset=utf-8"
$ajax
发送的是无效的JSONJSON要求键和字符串值使用双引号
不要尝试手动创建JSON…使用内置序列化器的语言
尝试改变:
data: '{args: ' + argu + '}',
data: JSON.stringify({args: argu }),
注意:似乎你在服务器代码中期待int
。当你发送一个对象结构
为什么不简单地将数组值设置为data并进行post呢?
function Test(){
var argu = [1, 2];
$.ajax({
type: 'POST',
url: 'MyPage.aspx/Foo',
data: argu,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
// Success
},
error: function (response) {
// Failed
}
});
}
您可以使用JSON.stringify([1,2])
将整个数据作为字符串发送到后端,获取数据作为字符串(而不是int[])并将其反序列化或解析回int[]