Ajax-запрос не получает xml от Django - PullRequest
0 голосов
/ 17 января 2010

У меня есть сервер Django, который обрабатывает запросы к URL-адресу, который возвращает HTML для использования в галерее изображений. Я могу перейти к URL-адресу, и браузер отобразит возвращаемый HTML-код, но я не могу получить тот же HTML-код, выполнив вызов AJAX (используя jQuery) по тому же URL-адресу.

Это представление, которое генерирует ответ:

def gallery_images(request, gallery_name):
    return render_to_response('galleryimages.html', {'images': get_images_of_gallery(gallery_name)}, mimetype='text/xml')

Это шаблон 'galleryimages.html':

{% for image in images %}
<div id="{{image.name}}big">
    <div class="actualImage" style="background-image:url({{image.image.name}});">
        <h1>{{image.caption|safe}}</h1>
    </div>
</div>
{% endfor %}

Это вызов jQuery, который я делаю:

$("#allImages").load("http://localhost:8000/galleryimages/Web");

Однако, это ничего не загружает в мой div #allImages. Я использовал firebug и запустил метод jjuery Ajax .get ("http://localhost:8000/galleryimages/Web"), а firebug говорит, что текст ответа полностью пуст.

Когда я проверяю журнал сервера Django, это запись, которую я вижу, когда я вручную перехожу на URL через мой браузер:

[16 / Jan / 2010 17:34:10] "ПОЛУЧИТЬ / galleryimages / Web HTTP / 1.1 "200 215

Это запись в журнале сервера, когда я выполняю вызов AJAX:

[16 / Jan / 2010 17:36:19] "ВАРИАНТЫ / galleryimages / Web HTTP / 1.1 "200 215

Почему AJAX-запрос не получает xml, который обслуживает моя страница Django?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2011

Проблема заключалась в том, что JQuery замечал, что запрашиваемый URL-адрес находился в другом домене, и в попытке остановить междоменный сценарий преобразовал мой запрос GET в запрос OPTION.

Решением этой проблемы было написать страницу PHP, которая будет принимать URL в качестве параметра запроса, и отправить запрос AJAX на эту страницу прокси PHP. Прокси-страница вытащит URL-адрес, который я передал, и отправит его обратно.

(см. Здесь: http://www.abdulqabiz.com/blog/archives/2007/05/31/php-proxy-script-for-cross-domain-requests/)

0 голосов
/ 17 января 2010

Вы хотите указать mimetype='application/xml'.

...