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

时间:2016-06-26 18:25:05

标签: 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 + '}',
        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;
}

应用程序已成功构建。我已经把断点但我的代码隐藏方法不会触发。我想知道问题出在哪里?我还缺少什么?

3 个答案:

答案 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 []