0

我有一个 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]“GET /galleryimages/Web HTTP/1.1”200 215

这是我进行 AJAX 调用时服务器日志中的条目:

[2010 年 1 月 16 日 17:36:19]“选项 /galleryimages/Web HTTP/1.1”200 215

为什么 AJAX 请求没有得到我的 Django 页面正在服务的 xml?

4

2 回答 2

0

您要指定mimetype='application/xml'.

于 2010-01-17T06:44:44.657 回答
0

问题是 JQuery 注意到我请求的 URL 在另一个域上,为了阻止跨域脚本,将我的 GET 请求转换为 OPTION 请求。

解决方案是编写一个接受 URL 作为查询参数的 PHP 页面,并将 AJAX 请求发送到这个 PHP 代理页面。代理页面会拉下我传入的 URL 并将其发回。

(见这里:http ://www.abdulqabiz.com/blog/archives/2007/05/31/php-proxy-script-for-cross-domain-requests/ )

于 2011-02-10T22:08:22.240 回答