Ajax请求不从Django接收xml

时间:2010-01-16 23:57:23

标签: jquery ajax django http-method

我有一个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时看到的条目:

  

[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请求没有得到我的Django页面正在服务的xml?

2 个答案:

答案 0 :(得分:0)

您想指定mimetype='application/xml'

答案 1 :(得分: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/