无法从其他URL接收JSON数据

时间:2017-05-07 10:32:21

标签: javascript jquery json

我的情况是我想要使用的页面上有JSON数据,但我似乎无法获取数据。我得到错误

  

未捕获的SyntaxError:意外的令牌:或XMLHttpRequest无法加载URL。没有'Access-Control-Allow-Origin'标题   请求的资源。因此不允许原点'null'   访问。

最后一个是我从我正在使用的网址中删除?callback=?。我正在尝试从中获取数据的URL是: http://mxsimulator.com/servers/server.tmfactory-racing.com:19803/tracks/sx2016r01anaheim/records_450f

<!DOCTYPE html>
<html>
<head>
<title>JSON</title>
<meta charset="utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">

    $(document).ready(function(){
        $.getJSON("http://mxsimulator.com/servers/server.tmfactory-racing.com:19803/tracks/sx2016r01anaheim/records_450f?callback=?",
            function(data){
                alert("Something");
            });
      });

</script>
</head>
<body>

<div id="datahere"></div>

</body>
</html>

我想在这里做的主要是将数据转换为某种形式的对象/变量,我可以使用它并以我可以使用它的方式呈现。我已经尝试了很多通过谷歌搜索找到的方法,但我总是得到上面提到的2条错误信息之一。

我对如何使其发挥作用的任何意见深表赞赏。

2 个答案:

答案 0 :(得分:0)

错误很明显:您在HTTP字段“Origin”不能为“null”的服务器上执行GET请求。

如果您是服务器的所有者,可以使用某些行修复此问题(以下示例位于节点js中)。

var express = require('express');
var app = express();

var port = process.env.PORT || 8080;
var status = false;
var secret_id = "segreto";

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

app.get('/', function (req, res) {
  res.send('Hello World, please use a GET /getState to see the current state of the library');
});

在客户端,this resolution可以正常使用。

答案 1 :(得分:0)

此错误是设计错误的,由于browser security reasons,您不能获取脚本或跨域数据。您正在尝试使用JSONP解决此问题,但您请求的资源未返回JSONP,它会返回常规的JSON响应。

您需要:

  • 在后端获取此数据,然后将其提供给您的前端。
  • 获取您要求返回JSONP的资源。