0

我是 jQuery 新手,我有一个简单的 jQuery 脚本。

我把它放在我的标题中:

<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'/>

在我的身体里,我有这个:

<script type='text/javascript'>
  $(document).ready(function() {
    alert(1);
    $.getJSON('http://puppygifs.tumblr.com/api/read/json', function(data) {
      alert(2);
    });
  });
</script>

但是,虽然 Firebug 说 JSON 已被访问并且没有错误,但我只收到第一个警报,而不是第二个。为什么第二个警报不执行?

4

1 回答 1

3

返回的json响应http://puppygifs.tumblr.com/api/read/json不是有效的json,导致success handler没有执行。

如果您查看第一行的响应var tumblr_api_read={,它是无效的。要查看有效的 json 示例结帐:http: //json.org/example.html

这种情况在 Jquery 文档中有说明:

从 jQuery 1.4 开始,如果 JSON 文件包含语法错误,请求通常会静默失败。因此,请避免频繁手动编辑 JSON 数据。JSON 是一种数据交换格式,其语法规则比 JavaScript 的对象文字表示法更严格。例如,在 JSON 中表示的所有字符串,无论是属性还是值,都必须用双引号括起来。有关 JSON 格式的详细信息,请参阅http://json.org/

getJson 文档

还要确保使用结束标记而不是速记结束标记关闭脚本标记

<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'></script>

如果您从提供域之外访问此 json,则必须指明其jsonp 这可以通过附加&callback=?到 jQuery 文档中描述的 url 来完成。

$(document).ready(function() {
    alert(1);
      $.getJSON('http://services.faa.gov/airport/status/SFO?' + 
              'format=application/json&callback=?', function(data){
      alert(2);
    });
  });

JS 小提琴 http://jsfiddle.net/J5jYW/

于 2013-09-01T20:53:09.697 回答