我正在Asp.Net中开发一个Web应用程序,在我使用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;
}
应用程序已成功构建。我已经把断点但我的代码隐藏方法不会触发。我想知道问题出在哪里?我还缺少什么?
答案 0 :(得分:1)
问题出在哪里?
您发送的内容不是有效的JSON,而是您设置scanf("%lf", *(coeff+1)); --> scanf("%lf", coeff+p);
$ajax
发送的内容
JSON需要双引号用于键和字符串值
不要尝试手动创建JSON ...使用序列化程序中内置的语言
尝试更改:
contentType: "application/json; charset=utf-8"
要
data: '{args: ' + argu + '}',
注意:您似乎期望服务器代码中有data: JSON.stringify({args: argu }),
。发送对象结构时看起来很可疑
答案 1 :(得分:1)
所有代码似乎都足以拨打电话,但我认为问题在于传递代码中的int
。
应该是。
data
最后你的代码应该像
data: '{args: ' + JSON.Stringify(argu) + '}'
希望有所帮助。
答案 2 :(得分:1)
为什么不简单地将数组值设置为数据并进行发布?
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 []