【发布时间】:2018-04-28 08:31:11
【问题描述】:
我正在尝试从此 url 获取此 json 对象:
https://test3.diavgeia.gov.gr/luminapi/opendata/dictionaries//KANONISTIKI_PRAXI_TYPE.json
您可能不会得到太多,因为它是希腊语,但您会得到 jsonformat。
这是我的代码:
function getDicts() {
api_url = 'https://test3.diavgeia.gov.gr/luminapi/opendata/dictionaries/KANONISTIKI_PRAXI_TYPE.json'
$.ajax({
headers: {
'Access-Control-Allow-Origin': '*',
},
url: api_url,
type: "GET",
crossDomain: true,
dataType: 'jsonp',
success: function(api_data) {
var obj = $.parseJSON(api_data);
console.log(obj);
},
error: function(error) {
console.log(error);
},
});
};
};
getDicts();
如果我使用jsonas thedataType`,我会收到错误消息:
SyntaxError:JSON.parse:json 数据的第 1 行第 1 列出现意外字符
这是一个小提琴:https://jsfiddle.net/danee/sz7tLru8/
更新!
根据我找到的一些示例,我稍微更改了函数。使用jsonpdataType,在网络选项卡上我确实得到了一个json 对象,但在控制台上我得到了这个:
语法错误:缺失;声明前[了解更多] KANONISTIKI_PRAXI_TYPE.json:1:7
这是与jsonp 通话的屏幕截图。
这似乎是json 对象的错误?以前没遇到过。
我也更新了小提琴,但我什么也没得到,没有响应。
【问题讨论】:
-
此 URL 具有完美的 JSON 响应,但是,由于 URL 具有跨域限制,我无法重现此错误。你能创建一个小提琴来重现它吗?
-
@31piy 感谢您的帮助。我更新了我的问题!
-
小提琴没有帮助。我可以在控制台中看到相同的 CORS 错误。你试过运行它吗?
-
@31piy 是的,我做到了,而且效果很好。不过,我在小提琴上没有收到错误
-
如上所述,我认为您不会遇到解析错误,而是 CORS。向您的 Ajax 添加错误函数,您将看到错误。我已经在本地部署了自己的 web api 来防止 CORS,返回相同的 json 并且工作正常,它运行状态为 0 的成功函数。查看“网络”选项卡会误导你。
标签: json json json json jsonp json json javascript jquery json ajax