$(document).ready(function(){
alert("1");
$("button").click (function(){
alert("2");
$.getJSON("http://search.twitter.com/search.json?q=messi", function(data){
alert("3");
});
alert("4");
});
} 页面加载后会出现一个警告并按预期显示1。当我点击按钮时,会出现两个警报并分别说2,4。似乎getJSON函数存在问题我无法解决它。
答案 0 :(得分:1)
您的代码通过提出跨域请求侵犯了Same Origin Policy。
您可以通过向查询字符串添加callback=?
参数使其成为JSONP请求(不是Ajax请求且不受同源策略约束)来解决此问题:
$.getJSON("http://search.twitter.com/search.json?q=messi&callback=?", function(data){
alert("3");
});
当请求URL包含callback=?
参数时,jQuery会自动将其视为JSONP请求,并添加此抽象层,使其“看起来像”一个Ajax请求。您可以使用包含已解析的JSONP响应的data
对象。
PS。您可能需要查看Dev Tools'(或Firebug')console
进行开发。与alert
不同,它是非阻塞的,允许您显示各种数据类型和嵌套数据结构。