在第三方服务器上使用JSON

时间:2018-10-10 19:11:40

标签: javascript jquery json jsonp

我正在使用cordova开发Android应用程序,我需要从以下地址读取json文件:Dati.venezia.it,并将其放入json变量中。我曾尝试使用jQuery getJson,但我在CORS方面遇到问题,我也曾尝试过使用JSONP进行同样的思考,但我没有得到它的工作原理。 任何帮助,将不胜感激。

console.log("start");
var url = 'http://dati.venezia.it/sites/default/files/dataset/opendata/livello.json?callback=?';
this.risultato= $.getJSON(url, function(data){

}); 
console.log("end");

这是getJson的尝试

$.getJSON('http://dati.venezia.it/sites/default/files/dataset/opendata/livello.json', function (data) {
  console.log(data);

  var items = data.items.map(function (item) {
    return item.key + ': ' + item.value;
  });

  showData.empty();

  if (items.length) {
    var content = '<li>' + items.join('</li><li>') + '</li>';
    var list = $('<ul />').html(content);
    showData.append(list);
  }
});

1 个答案:

答案 0 :(得分:0)

您可以使用jsonp作为解决方法,这是正确的。查看Dati.venezia.it,它当前似乎不支持jsonp。您需要使端点 Dati.venezia.it 提供一个回调,以使Access-Control-Allow-Origin正常工作。

此外,端点缺少响应标头Access-Control-Allow-Origin,该标头不允许其他站点从没有该标头的情况中提取数据。这就是为什么您遇到CORS问题的原因。如果您可以控制该网站,则需要在其响应标题中添加=IF(E28-TODAY()>0,"Overdue",IF(TODAY()-E28<=7,"1 WEEK LEFT",""))