JQuery Ajax с несколькими возвращаемыми значениями из ASP.NET - PullRequest
2 голосов
/ 13 октября 2010

Как я могу вернуть несколько значений из JQuery.Ajax () в функцию успеха?

Я пробовал:

          $.ajax({
                type: "POST",
                url: "default.aspx/myFunction",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    $("#myDiv").html(msg.a[0]);
                    $("#myDiv2").html(msg.a[1]);
                }
            });

А вот моя страница ASP.NET:

<WebMethod()> _
Public Shared Function myFunction() As Array

     Dim a() As String
     a(0) = "value 1"
     a(1) = "value 2"

     Return a

End Function

Работает только в уникальной возвращаемой строке, но массив не работает: (

Ответы [ 3 ]

8 голосов
/ 13 октября 2010

Измените его на msg.d[0].

Wirting msg.a совершенно неверно; возвращаемое значение метода не имеет ничего общего с именем переменной.

Однако по соображениям безопасности ASP.Net помещает объект JSON в свойство d, поэтому для доступа к массиву необходимо написать msg.d.

1 голос
/ 05 сентября 2014

Для себя я использовал response.d, чтобы вернуть полный массив, отформатированный в примере с запятой [1,2,3]. Чтобы получить человека, это то же самое, что и выше (response.d [0]). Значения были возвращены в AJAX в виде List (Of Strings) с использованием WebMethod.

                var Str = {};
                Str.StrVal = 'Test1';
                Str.StrVal2 = 'Test2';
                Str.StrVal3 = 'Test3';
                Str.StrVal4 = 'Test4';
                $.ajax({
                    type: "POST",
                    url: "VB.aspx/GetString",
                    data: '{Str: ' + JSON.stringify(Str) + '}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (response) {
                        alert("User has been added successfully." + response.d);
                        //window.location.reload();
                        //window.data("kendoWindow").close();
                        Str.StrVal = response.d[0]//response.d
                        //AddTab(response.d)
                        GetTabs(Str.StrVal)
                    },
                    error: function (response) {
                        alert(response.d)
                    }
                });

Вот веб-метод, извините за краткое описание переменной. Просто образец.

<WebMethod()> _
<ScriptMethod()> _
Public Shared Function GetString(Str As SendString) As List(Of String)
    Dim a As New List(Of String)
    a.Add("1")
    a.Add("2")
    Return a
End Function

Спасибо

0 голосов
/ 13 октября 2010

Я получил решение!

Я просто использую msg.d[0] вместо msg.a[0]

...