У меня есть сервер Django, который обрабатывает запросы на URL, который будет возвращать некоторые HTML для использования в галерее изображений. Я могу перейти к URL-адресу, и браузер отобразит возвращаемый HTML-код, но я не могу получить тот же HTML, выполнив вызов AJAX (используя jQuery) с тем же URL-адресом.Ajax запрос не получает XML из Django
Это мнение, что генерирует ответ:
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");
Однако, это не загружает ничего в моих #allImages дела. Я использовал firebug и запускал jQuery-метод Ajax .get («http://localhost:8000/galleryimages/Web»), и firebug говорит, что текст ответа полностью пуст.
Когда я просматриваю журнал сервера Django, это запись я вижу, когда я перейти к URL вручную, через мой браузер:
[16/Jan/2010 17:34:10] " GET /galleryimages/Web HTTP/1.1" 200 215
Это запись в журнале сервера, когда я делаю вызов AJAX:
[16/Jan/2010 17:36: 19] "ОПЦИИ /galleryimages/Web HTTP/1.1 "200 215
Почему запрос AJAX не получает XML-страницу, на которой работает моя страница Django?
Почему указать вы отправляете XML (а затем отправить неверный документы XML, один недостаток элемента верхнего уровня), когда 'load' JQuery разработан, чтобы получить HTML, и это делает Кажется, что это HTML, который вы отправляете? Я сомневаюсь, что отвечает за этот странный HTTP 'запроса OPTIONS', и, таким образом, вашу проблему, но это, конечно, не может помочь, и только усложняет проблему ни к чему хорошему концу (браузеры предназначены для невероятно терпимы плохих данных, так что это не хорошо проверьте, что данные видны в одном из них ;-). –
Ах спасибо! Это, вероятно, шаг 1, чтобы заставить это работать. Я изменил mimetype на text/html, но, к сожалению, запрос ajax по-прежнему появляется как метод OPTIONS, и он ничего не получает. – ampersandre
работает, если вы вынимаете всю часть mimetype? –