Почему мой вызов jQuery ajax не удался - PullRequest
1 голос
/ 12 апреля 2011

Я разрабатываю свое веб-приложение и запускаю его на localhost: 8080, в моем файле js у меня есть вызов ajax для получения данных XML с сервера:

$.ajax({
        url: 'http://COMPANY_DOMAIN.com/company-interface/the-id',
        type: 'GET',
        async: false,
        dataType: 'application/xml',
        data: {id: 43},
        success: function(data) {

            alert(data);

        },
        error: function(xhr, status, error){
            alert('error happens');
        }
     })

Я могу получить доступ к URL http://COMPANY_DOMAIN.com/company-interface/the-id/?id=43, который покажет результат xml в браузере, но мой приведенный выше вызов ajax всегда переходит к функции ошибки.

Я проверил в firebug, на вкладке «xml» отображается « Ошибка синтаксического анализа XML: элемент не найден Расположение: moz-nullprincipal: {9fd0dca8-cf07-4401-b1de-ab04e8aa00bc} Строка № 1, столбец 1 : "и firebug показывает, что URL GET равен http://COMPANY_DOMAIN.com/company-interface/the-id/?id=43& = 1302610001570 .

Почему firebug GET показывает " ... & = 1302610001570 "? что это значит? почему мой вызов ajax не удался, хотя я могу получить доступ к этому URL?

---------------- EDIT ---------------

Привет, я перешел на localhost запрос вроде:

$.ajax({
            url: 'http://localhost:8080/company-interface/the-id',
            type: 'GET',
            async: false,
            dataType: 'xml',
            data: {id: 43},
            success: function(data) {

                alert(data);

            },
            error: function(xhr, status, error){
                alert('error happens');
            }
         })

Но я получил ту же ошибку ... больше предложений, пожалуйста ... спасибо.

Ответы [ 5 ]

3 голосов
/ 12 апреля 2011

Это возможно из-за междоменного контроля доступа .Вы заходите на сайт, который находится на вашем компьютере и пытается подключиться к другому сайту.Это недопустимо, если вы не определите Access-Control-Allow-Origin заголовки.

Также, как сказал @Craig, тип содержимого как xml необходимо изменить.

1 голос
/ 09 февраля 2013

Попробуйте ниже код:

 $.ajax({
            url: 'http://localhost:8080/company-interface/the-id',
            type: 'GET',
            async: false,
            dataType: 'text',
            data: {id: 43},
            success: function(data) {

            // Assume response like..
            // <note>
            //    <from>Jani</from>
            //    <to>Tove</to>
            //    <message>Remember me this weekend</message>
            //  </note>

            xmlDoc = $.parseXML( data ),
            $xml = $( xmlDoc ),
            $message = $xml.find("message")
            alert($message.text());
            $("#xmlResonse").html($message.text());

        },
        error: function(xhr, status, error){
            alert('error happens');
        }
     })
1 голос
/ 12 апреля 2011

Javascript подчиняется той же политике происхождения . Ваш скрипт, работающий на localhost, не может получить доступ к COMPANY_DOMAIN.com.

0 голосов
/ 12 апреля 2011

1302610001570 предназначен для измерения ответа,

Вы проверили, если ответ создает действительный xml?

0 голосов
/ 12 апреля 2011

измените свой тип данных на application/xml или text/xml

Как следует из другого комментария, ваш URL находится на другом домене?Если нет, попробуйте вместо этого использовать относительные URL.

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