JQuery AJAX вызов возвращаемое значение - PullRequest
4 голосов
/ 24 июня 2011

У меня есть приложение asp.net с методом статической страницы.Я использую приведенные ниже коды для вызова метода и получения его возвращенного значения.

$.ajax({
       type: "POST",
       url: "myPage/myMethod",
       data: "{'parameter':'paramValue'}",
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       success: function(result) {alert(result);}                                
 });

То, что я получил, это [объектный объект].

Ниже приведен мой статический метод.И у меня также есть EnablePageMethods="true" EnablePartialRendering="true" в моем ScriptManager.

    [WebMethod]
    [ScriptMethod]
    public static string myMethod(string parameter)
    {
         return "Result";
    }

Есть ли способ получить возвращаемое значение?

Ответы [ 4 ]

6 голосов
/ 24 июня 2011

Попробуйте использовать инструменты разработчика Chrome или плагин firebug от Firfox. Не уверены, что инструменты разработчика IE позволяют вам проверять вызовы ajax?

Результирующая строка, которую вы ищете, фактически находится внутри объекта результата. Вам нужно посмотреть на переменную d. Я помню, где-то читал, почему это было, я думаю, что это ASP.NET, играющий вокруг: |

Попытка:

success: function(data) {alert(data.d);} 

с #

[WebMethod]
public static string GetTest(string var1)
{
    return "Result";
}

Надеюсь, это поможет.

4 голосов
/ 24 июня 2011

Просто вы застряли в .d, который представлен в ответе JSON от ASP.NET 3.5. По словам Дейва Уорда,

Если вы не знакомы с «.d» Я имею в виду, это просто функция безопасности, добавленная Microsoft в ASP.NET 3.5 версии ASP.NET AJAX. Инкапсулируя JSON ответ в родительском объекте, рамки помогают защитить от особенно неприятная уязвимость XSS .

Так что просто проверьте, существует ли .d, а затем разверните его. Измените свою функцию успеха следующим образом.

success: function(result) {
    var msg = result.hasOwnProperty("d") ? result.d : result;
    alert(msg );
}        
0 голосов
/ 24 июня 2011

Я нашел решение.

Вы можете использовать parseJSON, чтобы получить результат http://api.jquery.com/jQuery.parseJSON/

или измените тип данных на html, чтобы увидеть фактическое значение. http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests

Спасибо, ребята, за вашу помощь.

0 голосов
/ 24 июня 2011

Как насчет этого?

$.ajax({
     type: "POST",
     url: "myPage/myMethod?paramater=parameter",
     success: function(result) {
        alert(result);
     }                                
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...