【发布时间】:2010-01-16 23:57:23
【问题描述】:
我有一个 Django 服务器,它处理对 URL 的请求,该 URL 将返回一些 HTML 以在图片库中使用。我可以导航到 URL,浏览器将显示返回的 HTML,但我无法通过对同一 URL 执行 AJAX 调用(使用 jQuery)来获得相同的 HTML。
这是生成响应的视图:
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 div 中。我使用了 firebug 并运行了 jQuery 的 Ajax 方法 .get("http://localhost:8000/galleryimages/Web") 并且 firebug 说响应文本完全为空。
当我检查我的 Django 服务器日志时,这是我通过浏览器手动导航到 URL 时看到的条目:
[2010 年 1 月 16 日 17:34:10] “获取 /galleryimages/Web HTTP/1.1" 200 215
这是我进行 AJAX 调用时服务器日志中的条目:
[2010 年 1 月 16 日 17:36:19] “选项 /galleryimages/Web HTTP/1.1" 200 215
为什么 AJAX 请求没有得到我的 Django 页面正在服务的 xml?
【问题讨论】:
-
当 jQuery 的
load被设计为接收 HTML 并且看起来确实是 HTML你在发送?我怀疑这是导致那个奇怪的 HTTPOPTIONS请求的原因,因此是你的问题,但它肯定无济于事,只会使问题复杂化到没有好的结果(浏览器被设计成非常容忍不良数据,所以它不好测试数据在其中一个中是否可见;-)。 -
啊,谢谢!这可能是让它发挥作用的第一步。我已将 mimetype 更改为 text/html,但不幸的是,ajax 请求仍然作为 OPTIONS 方法出现并且它没有收到任何内容。
-
去掉整个 mimetype 部分还能用吗?
标签: jquery ajax django http-method