jQuery.get()没有从django http获得响应

时间:2010-11-12 19:42:48

标签: jquery django httprequest

奇怪 - 我似乎无法使用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的事情?

1 个答案:

答案 0 :(得分:2)

你不能向这样的另一个域发出请求(另一个端口属于这个),它被same origin policy阻止。它不是jQuery或Django,而是浏览器如何实现XmlHttpRequest对象的安全性。

要向其他域发出请求,您需要使用JSONP来提取数据。