奇怪 - 我似乎无法使用jQuery.get()来读取django.HttpResponse的响应。
从Django的结尾,我有一个观点:
def hello(request):
return HttpResponse("Hello world", content_type="application/html")
和网址:
urlpatterns = patterns('',
('^hello/$', hello),
当我访问http://localhost:8000/hello/时,我会按预期看到“Hello World”。
在我的网页上,我这样做:
<html><head>
<script src="/asgapp/lib/jquery/jquery-1.4.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#testdiv').html("initial");
$.get('http://localhost:8000/hello/', function(data){
if(data){
$('#testdiv').html(data);
}
else{
$('#testdiv').html("no data");
}});
});
</script>
</head>
<body>
<h1>test page</h1>
<div id="testdiv">(empty)</div>
</body>
</html>
在firebug中,我看到了请求,但响应是空的,即使django已经看到请求并处理了响应。
我错过了什么吗?这是jQuery问题还是django.HttpResponse的事情?
答案 0 :(得分:2)
你不能向这样的另一个域发出请求(另一个端口属于这个),它被same origin policy阻止。它不是jQuery或Django,而是浏览器如何实现XmlHttpRequest对象的安全性。
要向其他域发出请求,您需要使用JSONP来提取数据。