我在浏览器中获取数据(以json格式),但我无法在Javascript代码中获取数据。这是我的代码:
jQuery(document).ready(function ($) {
$.ajax({
type: 'GET',
url: "http://reelcinemas.ae/Data/MoviesSession.json?callback=?",
async: false,
jsonpCallback: 'jsonCallback',
contentType: "application/json; charset=utf-8",
crossDomain: true,
dataType: 'jsonp',
success: function (nowShowing) {
nowShowingMoviesData = nowShowing;
},
error: function(xhr, status, error) { alert(error.text); },
});
});
我在浏览器控制台中看到错误:Uncaught SyntaxError: Unexpected token <
如果我改变代码:
$.ajax({
type: 'GET',
url: "http://reelcinemas.ae/Data/MoviesSession.json?jsonCallback=?",
processData: true,
data: {},
dataType: 'text/xml',
jsonpCallback: 'jsonCallback',
success: function (data) {
processData(data);
}
});
function jsonCallback(data) {
console.log(data);
}
我收到错误:No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。起源&#39; http://localhost:51418&#39;因此不允许访问。
但我可以从浏览器访问数据。
感谢
答案 0 :(得分:0)
<强> CORS – Cross Origin Resource Sharing. 强>
如果客户端具有不同的来源(在不同的服务器上),则需要您的服务器允许客户端加载资源。
这意味着,如果reelcinemas.ae
未发送上述标题(Access-Control-Allow-Origin
),则您的客户端将不会从那里加载资源。
例如,Access-Control-Allow-Origin: */*
标头允许所有客户端通过AJAX从那里加载数据。
编辑1
要解决此限制,您可以在页面上创建一个包含此内容的PHP脚本,并从脚本中调用它:
<?php
echo file_get_contents("http://reelcinemas.ae/Data/MoviesSession.json");
?>
阅读this article on MDN了解更多详情。
如果API提供商reelcinemas.ae
未发送此类标头,则他们不希望您通过AJAX加载此资源。