我正在嘗試從駐留在服務器上的文本檔案中獲取資料。當我將 URL 放入瀏覽器選項卡時,我可以訪問該位置并且能夠查看內容。我正在嘗試進行 AJAX 呼叫并獲取檔案內容,但出現錯誤:未捕獲的語法錯誤:意外的識別符號
代碼
function logResults(json){
console.log(json);
}
$.ajax({
url: u,
dataType: "jsonp",
jsonpCallback: "logResults"
});

在控制臺上,

我也嘗試了下面的代碼,但結果相同,
$.ajax({
type: 'GET',
url: u,
crossDomain: true,
dataType: 'jsonp',
async: false,
headers: {
"Access-Control-Allow-Origin": "*"
},
success: function(succ) {
console.log("Success: ", succ)
},
error: function(err) {
console.log("Error: ", err)
}
});
此代碼總是進入錯誤塊。
uj5u.com熱心網友回復:
你說:
dataType: "jsonp",
但是 URL 的回應是:
部署自動完成...
這不是JSONP,它是純文本。
當它嘗試將純文本作為 JSONP 執行時,您會收到錯誤訊息。
不要在dataType欄位中輸入錯誤資訊。
async: false,
那已被棄用。不要使用它。這也是沒有意義的,因為您正在使用回呼。
它也與 JSONP 不兼容,因此被忽略(直到您洗掉不正確的dataType.
跨域:是的,
除非您進行以下操作,否則這將無效:
- 非 JSONP 請求
- 同源_ _
- 它被重定向到不同的來源
......這是非常罕見的。
headers: { "Access-Control-Allow-Origin": "*" },
Access-Control-Allow-Origin是一個回應頭。它不屬于請求。嘗試將其添加到請求中會導致額外的問題,因為它會使請求預檢。
(至少,如果您沒有說dataType: 'jsonp'因為添加請求標頭與 JSONP 不兼容,就會出現這種情況)。
客戶端所需的一切
您需要在客戶端上的唯一代碼是:
function logResults(result){
console.log(result);
}
$.ajax({
url: u,
success: logResults
});
如果是跨域請求,您從中請求資料的服務器將需要使用CORS 授予您訪問它的權限。
uj5u.com熱心網友回復:
這是因為您已將dataType 添加為 jsonp,因此它將嘗試決議對 JSON 的回應,如果回應不是 JSON,它將引發錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/465562.html
標籤:javascript jQuery 阿贾克斯 jsonp
上一篇:從陣列陣列中洗掉嵌套陣列
下一篇:我正在使用Javascript制作類似wordle的游戲,但我不知道如何測驗以查看兩個可比較單詞的第一個字母是否相同
