JQuery Ajax call Не найден элемент проблемы

Я получаю ошибку javascript на firefox 3.5 при попытке вызвать метод ajax.

Пожалуйста, найдите ошибку ниже:

XML Parsing Error: no element found Location: moz-nullprincipal:{1a2c8133-f48f-4707-90f3-1a2b2f2d62e2} Line Number 1, Column 1:

^

это моя функция javascript:

function Update(Id) {
    $.ajax({
        type: "GET",
        url: ROOT_URL + "/sevice/udates.svc/Update?Id=" + Id,
        success: function(response) {

        },
        async: false
    });
}

Ответы

Ответ 1

Ajax-вызов ожидает возврата XML (возможно, из-за плохого угадывания) и пытается разобрать его и терпит неудачу, если ничего не возвращается или оно недействительно XML..

Используйте параметр dataType, чтобы указать формат ответа.


Из комментариев видно, что некоторые браузеры не могут обрабатывать ответ без содержания. Таким образом, обходным путем для таких случаев может быть возвращение чего-то из вашей службы (даже одно пространство).

Ответ 2

Я исправил проблему, установив mimeType в "text/html"

Ответ 3

Это известная ошибка FireFox. https://bugzilla.mozilla.org/show_bug.cgi?id=547718 чтобы быстро исправить это, возможно, вы можете вернуть ответ с html-структурой (но без содержимого).

Ответ 4

Я столкнулся с альтернативной причиной этого - может помочь кому-то.

Если вы сделаете запрос $.ajax (в моем случае запрос PUT), который возвращает заголовок 200, но никакого содержимого тела, которое я видел, появляется такое же сообщение об ошибке XML Parsing - даже когда установлен dataType до json.

(по крайней мере) работают два решения:

  • Сделать все запросы API PUT возвращать некоторый контент или
  • Верните вместо заголовка 204 "Нет содержимого" (что я закончил)

Ответ 5

async также является частью опций. Также укажите dataType как xml

function Update(Id) {
    $.ajax({
        type: "GET",
        async: false,
        dataType: "XML",
        url: ROOT_URL + "/sevice/udates.svc/Update?Id=" + Id,
        success: function(response) {

        }
    });
}

Ответ 6

Вам нужно отправить html-документ на вывод (выход udates.svc в вашем случае). Если вы используете ASP.NET, вы можете сделать следующее:

Response.Clear();
Response.Write("<html xmlns="http://www.w3.org/1999/xhtml">");
Response.Write("<head><title></title></head>");
Response.Write("<body>");
Response.Write("your output");
Response.Write("</body>");
Response.Write("</html>");
Response.ContentType = "text/HTML";
Response.End();