通过ajax将jquery中的数组传递给ac#webmethod

Mde*_*era 4 asp.net jquery

我想将一个数组传递给ac#webmethod,但没有一个很好的例子可以遵循.谢谢你的帮助.

这是我到目前为止:

我的阵列:

$(".jobRole").each(function (index) {

    var jobRoleIndex = index;
    var jobRoleID = $(this).attr('id');
    var jobRoleName = $(this).text();

    var roleInfo = {
        "roleIndex": jobRoleIndex,
        "roleID": jobRoleID,
        "roleName": jobRoleName
    };

    queryStr = { "roleInfo": roleInfo };
    jobRoleArray.push(queryStr);

});
Run Code Online (Sandbox Code Playgroud)

我的ajax代码

  $.ajax({
            type: "POST",
            url: "WebPage.aspx/save_Role",
            data: jobRoleArray,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function (data) {
                alert("successfully posted data");
            },
            error: function (data) {
                alert("failed posted data");
                alert(postData);
            }

        });
Run Code Online (Sandbox Code Playgroud)

在网络方法上不确定,但这是我在想的:

[WebMethod]
    public static bool save_Role(String jobRoleArray[])
Run Code Online (Sandbox Code Playgroud)

Ica*_*rus 8

你将传递一个数组:

[
    "roleInfo": { 
              "roleIndex": jobRoleIndex, 
               "roleID": jobRoleID, 
               "roleName": jobRoleName 
     },
     "roleInfo": { 
              "roleIndex": jobRoleIndex, 
               "roleID": jobRoleID, 
               "roleName": jobRoleName 
     }, ...
]
Run Code Online (Sandbox Code Playgroud)

在我看来,如果你有一个匹配该结构的类会更容易,如下所示:

public class roleInfo
{
     public int roleIndex{get;set;}    
     public int roleID{get;set;}
     public string roleName{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

因此,当您从jQuery调用Web方法时,您可以这样做:

 $.ajax({
            type: "POST",
            url: "WebPage.aspx/save_Role",
            data: "{'jobRoleArray':"+JSON.stringify(jobRoleArray)+"}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function (data) {
                alert("successfully posted data");
            },
            error: function (data) {
                alert("failed posted data");
                alert(postData);
            }

        });
Run Code Online (Sandbox Code Playgroud)

在您的Web方法中,您可以通过List<roleInfo>以下方式接收:

[WebMethod]
public static bool save_Role(List<roleInfo> jobRoleArray)
{

}
Run Code Online (Sandbox Code Playgroud)

如果你试试这个,请告诉我.以上代码没有以任何方式进行测试,因此可能存在错误,但我认为这是一种很好且非常干净的方法.