我正在使用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);
}
});
答案 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",""))
。