我正在嘗試從該網址獲取一些 json:http ://api.conceptnet.io/query?rel=/r/UsedFor&limit=3
我有一個呼叫函式“jsonplz()”的按鈕,它應該給我一個關于獲取的 json 的警報。
我的 javascript 看起來像這樣:
<script src="http://code.jquery.com/jquery-3.3.1.min.js">
</script>
<script>
function jsonplz(){
$.getJSON("http://api.conceptnet.io/query?rel=/r/UsedFor&limit=3?callback=?",function(json){
console.log(json);
});
}
</script>
如您所見,我正在嘗試獲取 jsonp,因此為什么我在 url 的末尾添加了“?callback=?”,否則如果我試圖將它作為 json 獲取,我的瀏覽器會阻止我。
這是問題所在:它仍然不起作用。當我呼叫 jsonplz() 時,我在 firefox 控制臺上收到此錯誤:
警告:即使其 MIME 型別(“application/json”)不是有效的 JavaScript MIME 型別。
錯誤:未捕獲的語法錯誤:意外令牌:':'
任何解決此錯誤的解決方案或任何其他從外部 url 檢索 json 而無需下載其他第三方軟體的方法都值得贊賞
uj5u.com熱心網友回復:
如您所見,我試圖獲取的是 jsonp,因此我在 url 的末尾添加了“?callback=?”
服務器不支持 JSONP(不應該,這是一個帶有安全問題的骯臟黑客,我們現在有 CORS)。
任何一個:
- 更改服務器以支持 JSONP(不推薦;見上文)
- 洗掉
?callback=?并更改服務器以授予您的 JS 使用 CORS 讀取資料的權限 - 不要直接從客戶端獲取資料(例如通過您自己的服務器代理它)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/437374.html
標籤:javascript html jQuery json 阿贾克斯
