【问题标题】:Can't retrieve 3rd party json data无法检索 3rd 方 json 数据
【发布时间】:2013-11-22 21:46:59
【问题描述】:

我试图检索一些第 3 方(外部站点)json 数据。我认为这会起作用,但由于某种原因它没有......

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<meta charset="utf-8" />
<title>JSON Test</title>      
</head>  
<body>
...

<script>
$(document).ready(function(){
    $.getJSON("http://www.sodexo.fi/ruokalistat/output/daily_json/415/2013/11/22/fi?callback=?", function(data){
            alert(data.meta.generated_timestamp);
        });
});
</script>

</body>
</html> 

我被难住了。有任何想法吗?

【问题讨论】:

  • 你必须使用 JSONP。 jquery4u.com/json/jsonp-examples
  • @Leke 回调有问题。你确定你使用的是 JSONP 吗? jsfiddle.net/82wNq/22
  • 是的,使用 jsonp,我在 jquery4u 中使用 ?callback=?和 ?jsoncallback=?,但我只是注意到缺少一个;在外部 json 文件上。这会阻止数据导入吗?

标签: jquery json


【解决方案1】:

我在 sodexo.fi 上找不到任何信息,但即使您使用 ?callback(这使得 jQuery 使用 JSONP 而不是普通的 XMLHttpRequest),您也需要与服务器合作才能将正确的 JavaScript 返回为出色地。 sodexo.fi 不会这样做——至少对于请求的 URL 不会。

此外,它不会将 Access-Control-Allow-Origin 标头设置为允许 CORS(这也可以让您使用 JSONP)。

除非您能找到 sodexo.fi 公开的 JSONP API,否则您唯一的选择是拥有另一台服务器来托管您的前端并充当这些 JSON 请求的代理。

【讨论】:

  • 我之前没有真正使用过 json,但是文件的 json 格式没有 ;看起来正确。所以我猜你是说服务器需要将文件作为 json 提供,而不是它当前提供的任何文件。这就是报告错误的原因 - (因为 jquery 需要 json 类型)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-26
  • 2016-06-04
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多