Ошибка ответа от jQuery ajax на asp.net WebService, но нет ошибки - PullRequest
2 голосов
/ 17 февраля 2011

У меня есть запрос ajax, который вызывает WebService. Это работает и делает свое дело, и ничего не возвращает вообще (это пустота). Нет ошибок в приложении при отладке. Но событие ошибки для jquery .ajax продолжает срабатывать. textStatus и errorThrown не определены. В XMLHttpRequest отсутствует индикация состояния ошибки.

Почему этот запрос думает, что получает ответ об ошибке?

Также странно: если я поставлю точки останова в WebMethod, ошибка будет выдана клиенту ДО завершения метода. Кажется, он не ждет его завершения, он просто переходит к событию ошибки. Я ожидаю, что это как-то связано с проблемой здесь ...

$.ajax({
        url: baseUrl() + "/webservices/usersetting.asmx/SetSetting",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        data: $.toJSON(ajaxData),
        success: function (data) {
            alert('success');
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("Error: " + errorThrown + " data: " + ajaxData.id);
        }
    });

При отладке в случае ошибки:

XMLHttpRequest
abort: function (){w&&Function.prototype.call.call(g,w);L("abort")}
onabort: null
onerror: null
onload: null
onloadstart: null
onprogress: null
onreadystatechange: function (){}
readyState: 4
response: ""
responseText: ""
responseType: ""
responseXML: null
status: 0
statusText: ""
upload: XMLHttpRequestUpload
withCredentials: false
__proto__: XMLHttpRequest

Вот метод. Я попробовал это с пустым возвратом, и "верно". Пробовал отвечать форматом Xml и Json. Без разницы.

[WebMethod(EnableSession = true),
ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public string SetSetting(List<UserSettingData> data)
{
    UserSettingManager setMgr = new UserSettingManager(Global.UserSession.UserID);
    foreach (UserSettingData item in data)
    {
        setMgr.SetSetting(item.name, item.value);
    }

    return (jsonString(true));
}

1 Ответ

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

Проблема устранена после перезапуска Visual Studio. Не знаю почему, но сделано и сделано.

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