Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过jQuery+将数组作为参数传递给服务器方法;AJAX_C#_Jquery_Asp.net_Ajax - Fatal编程技术网

C# 如何通过jQuery+将数组作为参数传递给服务器方法;AJAX

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 + '}',

我正在用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#编写的

成功构建应用程序。我已经设置了断点,但是我的代码隐藏方法没有触发。我想知道问题出在哪里?我还缺少什么

问题在哪里

您发送的不是有效的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
        }
      });
}