AJAX w / jQuery не получает ожидаемый (или какой-либо) ответ на запрос - PullRequest
1 голос
/ 25 мая 2011

Я не получаю ожидаемый ответ от запроса веб-службы, который я делаю через API jQuery.ajax.Веб-служба получает запрос (я вижу, что он обрабатывается при выполнении вызова jQuery.ajax ()) и возвращает правильный XML (я вижу ожидаемый XML, когда выполняю запрос GET из браузера).

Я выполняю AJAX-вызов моего веб-сервиса следующим образом:

$.ajax({
    type: "GET",
    url: url_to_web_service,
    dataType: "xml",
    success: function (xml) {
        // the array of image source locations we'll build from the XML
        var thumbImgArray = new Array();

        // find every image source location and add it to the array
        $(xml).find("image_src_location").each(function () {
            thumbImgArray.push($(this));
        });

        // update the scrollable thumbnail images using the new array of image source locations 
        updateScrollableThumbs($(xml).find("indicator"), thumbImgArray);
    },
    error: function (xhr, err) {
        alert("AJAX error function invoked: \n\treadyState: " + xhr.readyState + "\n\tstatus: " + xhr.status);
        $('.error').html("responseText: " + xhr.responseText);
    }
});

Я всегда получаю функцию ошибки, вызываемую после выполнения запроса, с состоянием готовности == 4 и состоянием== 0.

Однако, если я изменю dataType на «text / xml» или «text», я попаду в функцию успеха, но данные ответа XML, переданные в метод, пусты (свойство responseXMLобъекта jqXHR имеет значение null).

После выполнения запроса Firebug отображает следующее:

Response Headers
Server  Apache-Coyote/1.1
Content-Type    text/xml;charset=ISO-8859-1
Content-Language    en-US
Content-Length  1326
Date    Wed, 25 May 2011 16:02:19 GMT

Request Headers
Host    localhost:8080
User-Agent  Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17 ( .NET CLR 3.5.30729)
Accept  application/xml, text/xml, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Origin  null

На вкладке Response ничего не отображается (указывает на пустую полезную нагрузку?), ина вкладке XML вы видите это:

XML Parsing Error: no element found Location: moz-nullprincipal:{a6fb7963-9b10-464c-a07d-c8e439b98f0d} Line Number 1, Column 1:

^

Кажется, что я что-то не так делаю в вызове jQuery.ajax (), который не позволяет включать полезную нагрузку XML как часть ответа.

Кто-нибудь может подсказать, где мне искать ошибку?

Заранее спасибо за помощь.

Ответы [ 3 ]

1 голос
/ 26 мая 2011

Похоже, что я все-таки нарушил ту же политику происхождения. Код работал, как и ожидалось, когда я разместил HTML-файл на том же сервере Tomcat с веб-службой. Другими словами, я предполагал, что file: // path / to / my / htmlfile и http://localhost:8080/my/web/service будут казаться одним и тем же доменом, но, очевидно, это не так.

0 голосов
/ 26 мая 2011

Я полагаю, что ваш XML искажен.Возможно, у вас есть пробел или строка в начале или конце XML-документа.По этой причине, когда вы переходите к тексту, вы можете получить успешный ответ.Кроме того, вы получаете эту ошибку: «Ошибка синтаксического анализа XML: элемент не найден Расположение: moz-nullprincipal: {a6fb7963-9b10-464c-a07d-c8e439b98f0d} Строка № 1, столбец 1:», которая говорит о том, что что-то не такс XML и браузер не может распознать ответ как XML

0 голосов
/ 25 мая 2011

Я предлагаю вам попробовать использовать fiddler или аналогичный инструмент, чтобы вы могли зафиксировать свой запрос и ответ.После его установки вы получите вкладку сети в инструментах разработчика IE, где вы можете собирать и проверять сетевой трафик, а также видеть ответ от сервера после того, как jquery сделает запрос.Под телом ответа вы увидите, какой сервер отправлен в ответ, и, вероятно, выясните, в чем проблема.

...