我有一个非常简单的jQuery来检索我最新的推文
$.getJSON("http://twitter.com/statuses/user_timeline/username.json?count=1",
function(data) {
$("#tweet_text").html(data[0].text);
});
这适用于我桌面上的简单HTML文件。但是,一旦从我的localhost(apache)访问该文件,就不会返回任何数据。我想知道Apache的任何部分是否以某种方式阻止了这个请求?还是其他任何想法?
答案 0 :(得分:7)
由于Same-origin Policy,JavaScript目前无法跨域直接请求。
你最好的选择可能就是考虑JSONP。
您可以通过jQuery:
找到有关它的更多信息如果网址包含字符串“callback =?”在URL中,请求被视为JSONP。有关详细信息,请参阅$.ajax()中
jsonp
数据类型的讨论。
和Twitter:
<强>参数:强>
回调:可选。 仅适用于JSON格式。如果提供,响应将使用带有给定名称回调的JSONP格式。
- 示例:
http://search.twitter.com/search.json?callback=foo&q=twitter
希望这有帮助。
...校正
如果status/user_timeline
支持JSONP,则不会将其记录下来。
您可能需要考虑设置Cross-Domain Proxy以获取所需的数据。
答案 1 :(得分:0)
这是shorthand Ajax函数,相当于:
$.ajax({
url: url,
dataType: 'json',
data: data,
success: success
});
不允许Ajax(非JSONP)跨域。
答案 2 :(得分:0)
尝试将callback=?
附加到网址。喜欢这个
"http://twitter.com/statuses/user_timeline/username.json?count=1&callback=?"
答案 3 :(得分:0)
由于某种原因,html加载到localhost可能需要更长的时间,而且你还没有将脚本包装在dom中。所以它进行了一次调用,当时没有#tweet_text被填满