2013-03-12 71 views
16

我看到了一些與ajax交叉域的例子,但它不起作用。跨域jquery得到

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

    <title></title> 
     <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
    </head> 
    <body> 

     <script type="text/javascript" > 
    $(document).ready(function() { 
      var url = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=AssasNet&include_rts=1"; 

      $.get(url, function (data) { 
     console.log(data) 
     alert(data); 
     }); 
     }); 

     </script> 

    </body> 
</html> 

我嘗試對鉻和給出以下錯誤:

XMLHttpRequest cannot load http://api.twitter.com/1/statuses/user_timeline.json?screen_name=AssasNet&include_rts=1. Origin null is not allowed by Access-Control-Allow-Origin. 
+3

你從哪裏得到這個例子?這是不正確 – 2013-03-12 18:47:29

+2

你必須專門設置外部服務器以使用這種方式使用跨域AJAX,這是你不能在這裏做的。 [請使用JSON-P代替。](http://api.jquery.com/jquery.getJSON/) – Blazemonger 2013-03-12 18:47:35

+1

也只有聲明。不是一個真正的問題。剛剛建議「錯誤在哪裏」 – 2013-03-12 18:50:04

回答

38

不能使用$.get因爲這確實一個Ajax調用,這將是跨來源,從而阻斷了Same Origin Policy ,並且您嘗試訪問的Twitter API不支持Cross-Origin Resource Sharing(或者如果是這樣,它不允許來源nullhttp://jsbin.com,這是我嘗試的)。

的API不支持JSONP(這是不是一個真正的Ajax調用),雖然如此,只是改變了$.get$.ajax指定JSONP作品:

$.ajax({ 
    url: url, 
    dataType: "jsonp", 
    success: function (data) { 
    console.log(data) 
    alert(data); 
    } 
}); 

Live Example | Source