Почему не работает ajax-запрос? - PullRequest
1 голос
/ 24 марта 2011

У меня чертовски много времени было с asp.net и запросом ajax с использованием JQuery. Я не могу понять, почему следующее не работает. Я что-то пропустил? Похоже, что запрос сработал нормально (без ошибок), но он никогда не идет внутри метода.

 // asp.net webforms (NOT MVC)
public partial class PollManager : System.Web.UI.Page
{

        [WebMethod]
        [ScriptMethod]
        public static string DeletePoll(string pollId)
        {
            string test = "testing";

            return test;
        }
}


  **Updated Code**

  $.ajax({
        url: "PollManager.aspx/DeletePoll",
        data: { "pollId": "17" },
        dataType: "text",
        success: function (data)
        {
            alert(data);
        }                
    });

На главной странице есть <asp:toolkitscriptmanager>, я не уверен, имеет ли это какое-то значение.

Ответы [ 4 ]

0 голосов
/ 25 марта 2011

Я думаю, вам нужно удалить [ScriptMethod], или изменить его на [ScriptMethod(ResponseFormat=ResponseFormat.Json)], потому что вы не хотите, чтобы ответ в формате XML. Вы хотите ответ JSON, не так ли?

Также я не знаю, как она сериализует строковый объект, но вы можете также попытаться вернуть определенный вами объект. Нравится new SomeResponseObject(){ MyResponseText="some text" }

Тогда, если вы вернете этот объект, в javaScript вы сможете получить к нему доступ следующим образом data.MyResponseText

0 голосов
/ 24 марта 2011

Похоже, вы путаете веб-службы ASP.NET и маршруты ASP.NET MVC. Среда выполнения веб-форм ASP.NET (ASPX) не знает, как взять ваши данные (17) и сопоставить их с параметром pollId.

0 голосов
/ 24 марта 2011

Вам нужно добавить обработчик success к вашему хэшу опций, который передается в $.ajax, что-то вроде этого:

    $.ajax({
        url: "PollManager.aspx/DeletePoll",
        data: "17",
        dataType: "text",
        success: function(data) {
            alert(data);
        }             
    });
0 голосов
/ 24 марта 2011

Ну ... для одного data: "17" не сработает.Вам нужно сделать что-то вроде data: {"pollId" : "17"}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...