C# 如何通过jQuery+将数组作为参数传递给服务器方法;AJAX
我正在用Asp.Net开发一个web应用程序,在代码中我使用C#。我已经成功地编写了将类对象传递给代码隐藏方法的代码,但我想知道如何通过ajax和jQuery将数组作为参数传递 我试过一些东西,但没用。这是我要运行的代码C# 如何通过jQuery+将数组作为参数传递给服务器方法;AJAX,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,我正在用Asp.Net开发一个web应用程序,在代码中我使用C#。我已经成功地编写了将类对象传递给代码隐藏方法的代码,但我想知道如何通过ajax和jQuery将数组作为参数传递 我试过一些东西,但没用。这是我要运行的代码 function Test(){ var argu = [1, 2]; $.ajax({ type: 'POST', url: 'MyPage.aspx/Foo', data: '{args: ' + argu + '}',
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#编写的
成功构建应用程序。我已经设置了断点,但是我的代码隐藏方法没有触发。我想知道问题出在哪里?我还缺少什么
问题在哪里
您发送的不是有效的JSON,这是您在设置contentType:“application/JSON;charset=utf-8”
JSON要求对键和字符串值使用双引号
不要尝试手动创建JSON。。。使用内置序列化程序的语言
尝试更改:
data: '{args: ' + argu + '}',
到
注意:服务器代码中似乎需要
int
。当你发送一个对象结构时看起来很可疑,所有的代码看起来都很好,可以调用,但我认为问题在于在你的代码中传递数据
应该是这样的
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
}
});
}
希望这会有所帮助。为什么不简单地将数组值设置为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[]。您必须将[HttpPost]与[WebMethod][ScriptMethod]一起包含。您还可以尝试更改“url”:@url.Content(,“Foo”)并检查它是否至少到达方法$。ajax仍将使用$.param进行序列化,并以此方式发送为表单编码
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
}
});
}
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
}
});
}