使用jQuery getJSON进行简单的API调用

时间:2016-08-09 03:28:45

标签: javascript jquery json api getjson

我正在尝试在Codepen中构建一个简单的随机引用生成器,如您所见:http://codepen.io/scabbyjoe/pen/dXQmLw

下面粘贴的相关代码:

<html>
    <head>
    </head>
    <body>
        <h1>Random Quote Machine</h1>
        <div class="quote">
        </div>
        <div class="btn">New Quote</div>
    </body>
</html>
$(document).ready(function() {
    $(".btn").on("click", function(){
        $.getJSON("http://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en", function(json) {
            $(".quote").html(JSON.stringify(json));
        });
    });
});

我担心我必须误解getJSON工具,因为我无法在.quote div中加载任何内容。

有谁可以解释为什么这不起作用?

我试着从这个(单独的)例子中得到遵循,这个例子确实有效:

<script>
  $(document).ready(function() {

    $("#getMessage").on("click", function(){
      $.getJSON("/json/cats.json", function(json) {
        $(".message").html(JSON.stringify(json));
      });

    });

  });
</script>

<div class="container-fluid">
  <div class = "row text-center">
    <h2>Cat Photo Finder</h2>
  </div>
  <div class = "row text-center">
    <div class = "col-xs-12 well message">
      The message will go here
    </div>
  </div>
  <div class = "row text-center">
    <div class = "col-xs-12">
      <button id = "getMessage" class = "btn btn-primary">
        Get Message
      </button>
    </div>
  </div>
</div>

2 个答案:

答案 0 :(得分:6)

检查控制台是否有错误:

  

XMLHttpRequest无法加载http://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://s.codepen.io”访问。

除非他们明确允许,否则您无法向域中托管的服务发出AJAX请求。此消息表明不允许这样做。

也许在某些情况下允许它;检查他们的文件。如果不是,您将必须通过您自己的服务器代理请求。在这种情况下也不能保证它是允许的。您可能需要提供类似API密钥的内容或添加到白名单中。

答案 1 :(得分:2)

您可以在控制台面板中发现错误消息:

  

XMLHttpRequest无法加载   http://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en。   No&#39; Access-Control-Allow-Origin&#39;标题出现在请求的上   资源。起源&#39; http://s.codepen.io&#39;因此是不允许的   访问。

您应该确保api.forismatic.com为允许跨域的资源提供服务。

或者您可以查看jquery.ajax crossDomain选项