使用getJSON的API调用不起作用

时间:2014-08-27 00:01:36

标签: jquery json jsonp

我正在尝试修改flickr示例:http://api.jquery.com/jquery.getjson/以改为使用Sqoot API。我正在使用这个例子来了解jquery。有人可以告诉我为什么它适用于flickr而不是sqoot?

我将我的api密钥更改为MYKEY,但他们只需提供一封电子邮件并输入密码即可立即给你。

感谢。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>SQOOT</title>
  <style>
    img {
      height: 100px;
      float: left;
    }
  </style>
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
  <div id="images"></div>
  <div id="titles"></div>
  <div id="images2"></div>
  <script>
    (function() {
      var SqootAPI = "http://api.sqoot.com/v2/deals?api_key=MYKEY&callback=?";
      $.getJSON( SqootAPI, {
        location: "miami"
      })
      .done(function( data ) {
        $.each( data.deals, function( i, item ) {
          $( "<img>" ).attr( "src", item.deal.image_url ).appendTo( "#images" );
          if ( i === 3 ) {
            return false;
          }
        });
      });
    })();
  </script>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

实际上,它们会返回JSON字符串而不是JSONP返回值。

它应该是这样的:

yourCallbackFunction({Object})

但他们只是返回JSON数据:

{ result: [ ] }

这就是您在控制台中收到消息的原因:

SyntaxError: missing ; before statement

如果您不使用回调函数,则会得到相同的原始策略。

您应该联系支持人员告诉他们他们的API存在问题。

编辑:

http://api.sqoot.com/v2/deals?api_key=YourKey&callback=pickles

http://docs.sqoot.com/v2/overview.html

在那里,您还可以看到它没有返回他们在文档(pickles({ "deals": [] }))中写入的期望值,这些值将是有效的jsonp。