我有一个安装了JSONAPI(8.2)的Drupal网站
当我访问http://example.org/jsonapi/node/mycategory时,我在浏览器中获得JSON响应,其中包含2个结果,其中包含应有的所有信息,因此我知道该链接有效并且该信息可公开获得。
现在我要用结果填充表格,所以我制作了这个JS
$(document).ready(startApp);
function startApp() {
loadNews()
}
function loadNwes() {
$.ajax({
url: "http://example.org/jsonapi/node/mycategory",
type: "GET",
dataType: "JSON",
data: {},
async: true,
success: function(res) {
console.log(res);
resultado = res;
for (var i = 0; i < resultado.length; i++) {
$("#listaResults").append("<li> hardcode res</li>");
}
$("#listaResultados").listview('refresh');
}
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Then in my index.HMTL file I have this
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script src="js/ClientServicios.js" type="text/javascript"></script>
</head>
<body>
TEST
<div role="main" class="ui-content">
<ul id="listaResults" data-role="listview" data-inset="true">
<li>Resultado hardcode</li>
</ul>
</div>
</body>
</html>
启动页面时,我看到的是1个硬编码的结果,但没有其他显示,如果我进入浏览器控制台,我会看到
跨域请求被阻止:“同源起源”策略禁止读取http://example.org/jsonapi/node/mycategory处的远程资源。 (原因:CORS标头“ Access-Control-Allow-Origin”缺失)
谷歌搜索,我发现了这个解决方案https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin
但是,第一次我编辑了.htaccess
,但是什么也没有发生,并且遇到了同样的错误,但是,当我通过浏览器访问JSON时,它就起作用了。
为什么在使用JavaScript时JSON不可用?如何解决此问题?