我正在尝试在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>
答案 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
选项