我看到了一些使用Ajax进行跨域的示例,但是它不起作用。
<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" /> <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>
我尝试使用chrome并给出以下错误:
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.
您无法使用,$.get因为它会进行ajax调用,该调用将是跨源的,因此被Same Origin Policy阻止,并且您尝试访问的Twitter API不支持跨源资源共享(或者如果它支持,允许,它不允许原点null或http://jsbin.com,这是我尝试过的)。
$.get
null
http://jsbin.com
该API确实支持JSONP(这不是真正的Ajax调用),因此只需将更$.get改为$.ajax指定即可JSONP:
$.ajax
JSONP
$.ajax({ url: url, dataType: "jsonp", success: function (data) { console.log(data) alert(data); } });
现场示例 | 资源