[英]jQuery AJAX call to fetch web api data returns syntax error
我正在嘗試從以下網址獲取此json對象:
https://test3.diavgeia.gov.gr/luminapi/opendata/dictionaries//KANONISTIKI_PRAXI_TYPE.json
您可能收不到多少錢,因為它采用的是希臘語,但您使用的是json格式。
這是我的代碼:
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();
如果我使用json as the
dataType`,則會出現錯誤: SyntaxError:JSON.parse: json數據的第1行第1列出現意外字符
這是一個小提琴: https : //jsfiddle.net/danee/sz7tLru8/
更新!
在找到一些示例之后,我對功能進行了少許更改。 使用jsonp dataType
,在“網絡”選項卡上我確實獲得了一個json對象,但是在控制台上卻得到了: SyntaxError:missing; 聲明前[了解更多] KANONISTIKI_PRAXI_TYPE.json:1:7
這是與jsonp
通話的屏幕截圖。 這似乎是json對象上的錯誤? 以前沒有遇到過。
我也更新了小提琴,但是我什么也沒收到,也沒有回應。
您的互聯網瀏覽器阻止了CORS Ajax呼叫。 作為一種解決方法,一種選擇是部署您自己的Web應用程序,僅用於運行將web請求diavgeia.gov.gr
到diavgeia.gov.gr
外部Web api,而不受此限制。
Internet瀏覽器-(Ajax)->您的Web服務器->目標網站
另一種選擇是使用已經免費提供此服務的反向代理網站。 他們將從服務器而不是Internet瀏覽器為您調用外部Web api,從而可以避免CORS。
Internet瀏覽器-(Ajax)-> 反向代理 ->目標網站
let anonimizerUrl = 'https://allorigins.us';
var apiUrl = 'https://test3.diavgeia.gov.gr/luminapi/opendata/dictionaries/KANONISTIKI_PRAXI_TYPE.json';
$.ajax({
url: anonimizerUrl + '/get?url=' + encodeURIComponent(apiUrl),
success: function(response) {
//Although response is an object, the field contents is a string and needs to be parsed here.
var data = JSON.parse(response.contents);
console.log(data);
},
error: function(request) {
console.log(request.responseText);
}
});
如果Allorigins
被您的Internet提供商(ISP)阻止,請嘗試從該列表中選擇另一台類似的服務器,包括。
注意:根據您的帖子,我假設您無權更改Web api。 否則,可以從那里啟用CORS或進行更改以返回jsonp而不是json。
Url返回您var obj = $.parseJSON(api_data);
解析的Json更改var obj = $.parseJSON(api_data);
到var obj = api_data;
更新您將數據類型設置為“ JSONP”以解決跨原點限制。 因此,jQuery現在正准備以jsonp而不是json的形式獲取響應,而真正的響應是json,這就是為什么發生此錯誤的原因:
未捕獲到的SyntaxError:意外令牌:
因此,如果該api在您的團隊中,則應在其中更改CORDS以接受來自當前域的跨域請求,並將數據類型從jsonp更改為json
推薦人問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.