2013-03-12 19 views
16

Ho visto alcuni esempi di dominio incrociato con ajax ma non funziona.cross domain jquery get

<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> 

provo su Chrome e viene dato il seguente errore:

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

Da dove proviene questo esempio? Non è corretto –

+2

Devi configurare il server esterno appositamente per utilizzare AJAX per più domini in questo modo, cosa che non puoi fare qui. [Usa JSON-P invece.] (Http://api.jquery.com/jquery.getJSON/) – Blazemonger

+1

Inoltre c'è solo la dichiarazione. Non una domanda reale. Ho appena suggerito "dov'è l'errore" –

risposta

38

Non è possibile utilizzare $.get causa che fa una chiamata AJAX, che sarà cross-origine e quindi bloccati dal Same Origin Policy e l'API di Twitter a cui stai tentando di accedere non supporta Cross-Origin Resource Sharing (o se lo fa, non consente né l'origine null o http://jsbin.com, che è quella che ho provato).

L'API fa supporto JSONP (che non è una vera e propria chiamata ajax), però, quindi solo modificando le $.get ad un $.ajax specificando JSONP opere:

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

Live Example | Source

Problemi correlati