如何通过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;
}

应用程序已成功构建。我已经把断点,但我的代码背后的方法不火。我想知道问题出在哪里?我还遗漏了什么?

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

所有的代码看起来都足够好,但是我认为问题是在你的代码中传递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发送的是无效的JSON

JSON要求键和字符串值使用双引号

不要尝试手动创建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[]