Как вызвать веб-метод ASP.net с параметром Array из jQuery Javascript? - PullRequest
2 голосов
/ 13 апреля 2011

У меня есть следующий веб-метод ASP.net:

[WebMethod]
public static string SaveUserNew(string id, string[] roles)
{
 doStuff(id, roles);
}

Я вызываю этот код из кода jQuery Javascript, но я не знаю синтаксис для передачи массива.Обычно я пишу код jQuery для вызова веб-методов, который выглядит следующим образом:

        $.ajax({
             type: "POST",
             url: "someUrl.aspx?webmethod",
             data: '{"foo":"fooValue"}',
             contentType: "application/json;",
             dataType: "json",
            }

Пожалуйста, пролите немного света на это.

Обновление : Вот примеркод без массивов , который работает:

[WebMethod]
public static string SaveUserNew(string id)
{
    return "0";
}

        var jdata = '{ "id": "3TWR3"}';

        $.ajax({
            type: "POST",
            url: "UserMgmt.aspx/SaveUserNew",
            data: jdata,
            contentType: "application/json;",
            dataType: "json",
            traditional: true                 
            }
        });

Я собираюсь написать некоторый код в аналогичном стиле, где я передаю массивы моему веб-методу.

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011

Передача param в webmethod немного сложнее.Попробуйте это

[WebMethod]
public static string GetPrompt(string[] name)
{

    return "Hello " + name[0] + " and " + name[1];
}

jscript

var param = "{'name':['jack', 'jill']}";
var option = {
    error: function(request, status, error) {
        alert(error);
    },
    cache: false,
    success: function(data, status) {
        alert(data.d);
    },
    type: "POST",
    contentType: "application/json; charset=utf-8",
    data: param,
    dataType: "json",
    url: "../Server/ArrayParam.aspx/GetPrompt"
};

$.ajax(option);
0 голосов
/ 13 апреля 2011

Вам необходимо
1) назначить параметр данных для объекта с идентификатором свойств и ролями.
2) назначить свойству role массив строк.
3) Установите для традиционной настройки значениеtrue при передаче параметров в вызов ajax.

Например:

$.ajax({              
    type: "POST",              
    url: "someUrl.aspx?webmethod",              
    data: {
        "id":"1",
        "roles":[
            "Admin",
            "Something",
            "Another Thing"
        ]
    },
    contentType: "application/json;",              
    dataType: "json", 
    traditional: true //#############################   
} 
...