jQuery无法从localhost检索数据

时间:2010-03-23 23:45:39

标签: jquery ajax apache json

我有一个非常简单的jQuery来检索我最新的推文

$.getJSON("http://twitter.com/statuses/user_timeline/username.json?count=1", 
           function(data) {
              $("#tweet_text").html(data[0].text);
           });

这适用于我桌面上的简单HTML文件。但是,一旦从我的localhost(apache)访问该文件,就不会返回任何数据。我想知道Apache的任何部分是否以某种方式阻止了这个请求?还是其他任何想法?

4 个答案:

答案 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被填满