无法使用jquery从API获取值

时间:2018-01-06 17:26:05

标签: javascript jquery html json ajax

我无法从Random quote API获取值。我不知道这个问题发生在哪里。是在获取内容还是将其返回到前端时。如果我有权访问日志,本来可以搞清楚。而且,我在互联网上免费找到了这个API。我仍然不明白回调参数的作用。 请参考下面的截图

Random Quote API jquery

这是我的HTML代码

$(document).ready(function() {
  $("#click").on("click", function() {
    $.getJSON("http://quotesondesign.com/wp-json/posts?filter[orderBy]=rand&filter[posts_per_page]=1&callback=", function(key) {
      $("#quote").append(key[0].content + "<br><p> - " + key[0].title + "</p>");
    });
  });
});
.position-message {
  margin-left: 25%;
  margin-right: 25%;
  margin-top: 10%;
  margin-bottom: 20%;
}

.background {
  background-color: maroon;
}

.button-shape {
  border-radius: 50%;
  width: 50px;
  height: 50px;
  margin: auto;
}

.fa-size {}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&amp;lang=en" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class="container-fluid">
  <div id="quote" class="well position-message"></div>
  <br>
  <br>
  <div class="row text-center">
    <button type="button" id="click" class="button-shape"><i class="fa fa-refresh fa-2x"></i></button>
  </div>
</div>

以下是我的网页的快照。我试图在单击按钮时在白色区域<div id="quote" class="well position-well">中打印随机引用。

Random Quote webpage

2 个答案:

答案 0 :(得分:1)

  

似乎您的服务器存在问题&#34; Access-Control-Allow-Origin&#34;。

抱歉误导,似乎http://null是由stackoverflow Run code snippet造成的。

I made a working copy (no code change besides change the `http` to `https`):

https://jsfiddle.net/qex5y16v/1/

答案 1 :(得分:1)

由于您要进行跨源请求,因此需要使用第二个示例。只需将&_jsonp=?添加到API网址即可。如果您的网页托管在https(例如stacksnippets)上,那么API网址也必须是https。

&#13;
&#13;
$(document).ready(function() {
  $("#click").on("click", function() {
    $.getJSON("https://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1&_jsonp=?", function(data) {
      console.log(data);
    });
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<button type="button" id="click" class="button-shape">Button</button>
&#13;
&#13;
&#13;

  

我仍然不了解回调参数的作用。

您正在从API(显然)不允许跨源请求请求JSON数据。但他们提供了一个解决方法:如果添加_jsonp=myfunc,则服务器返回JSONP而不是JSON,这实际上是包装JSON数据的JavaScript代码。 jQuery.ajax解释了详细信息。