JQuery: вызов Ajax, возвращающий неописуемое сообщение об ошибке - PullRequest
0 голосов
/ 15 июля 2011

Описание проблемы

Я получаю неописательное сообщение об ошибке при попытке вызвать страницу HTML. Однако возвращаются заголовки ответа, но фактического ответа нет. Я прошел через JQuery и теперь теряю, что еще я могу сделать?

В конечном итоге я пытаюсь получить следующий URL http://www.impre.com/uForms/external/getWeatherByZip?modules=top для отображения в div, который я создал в HTML на главной странице.

код

        <script type="text/javascript"> 
        $.ajax ({ 
            type: "GET",
            url: "http://www.impre.com/uForms/external/getWeatherByZip",
            data: "modules=top", 
            success: function(data) 
                { 
                    alert('Load was performed.');
                    $('#accuWeatherContainerTop').html(data);
                },
            error: function(data, responseText) 
                {
                    try 
                    { 
                        console.log('errData: ', data); 
                        console.log('responseText: ', responseText);
                    } catch(e) { 
                        alert("You don't have Firebug!\nFor shame..."); 
                    }
                },
            complete: function(jqXHR, textStatus) {
                console.log('com_jqXHR', jqXHR.getAllResponseHeaders());
                }
        });
    </script>

Примечания

  • После нескольких итераций я обработал несколько изломов, таких как сообщение об ошибке 301, которое я получал. Я наконец-то получил код ответа GET "200 OK", но текст ответа все еще отсутствует.

  • URL, к которому я пытаюсь подключиться, использует Zend Framework, и я не уверен, как это в конечном итоге повлияет на запрос AJAX.

Решение

Это было действительно нарушение политики одного и того же происхождения, и все ответы были точными в этом подозрении. Первоначальной проблемой была ошибка 301, которую я решил; по какой-то причине я пошел вперед и перенес его на живой сайт, и рабочий сервер теперь правильно отображает виджет. Спасибо!

Ответы [ 3 ]

1 голос
/ 15 июля 2011

Лучший способ отладить этот ajax-вызов - добавить третий параметр в вашу функцию ошибки.Из документации jquery:

error (jqXHR, textStatus, errorThrown) Функция

Функция, вызываемая в случае сбоя запроса.Функция получает три аргумента: объект jqXHR (в jQuery 1.4.x, XMLHttpRequest), строка, описывающая тип возникшей ошибки и необязательный объект исключения, если таковой произошел.Возможные значения для второго аргумента (кроме нуля): «timeout», «error», «abort» и «parsererror».При возникновении ошибки HTTP errorThrown получает текстовую часть состояния HTTP, например «Не найдено» или «Внутренняя ошибка сервера».

Третий параметр errorThrown может содержать некоторую значимую информацию вэто то, что поможет вам двигаться вперед с исправлением.

1 голос
/ 15 июля 2011

Что вам нужно сделать, это сделать AJAX-запрос к файлу на вашем сервере, скажем, request.php. В request.php вы будете выполнять своего рода запрос (в зависимости от того, какой язык на стороне сервера вы используете, если это действительно PHP - cURL,), чтобы запросить контент со страницы, которую вы первоначально пытались чтобы получить через AJAX в одиночку. Затем напечатайте этот ответ.

Как сказал @genesis, вы пытаетесь сделать XSS, и это запрещено.

1 голос
/ 15 июля 2011

Вероятно, это проблема Одинаковой политики происхождения

, так как вы загружаете ее из домена, который вам не принадлежит

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