首頁  >  文章  >  web前端  >  如何使用 jQuery.ajax#get 解決 JSONP 請求中的「意外令牌冒號」錯誤?

如何使用 jQuery.ajax#get 解決 JSONP 請求中的「意外令牌冒號」錯誤?

Linda Hamilton
Linda Hamilton原創
2024-10-19 22:54:02963瀏覽

How to Resolve

意外的令牌冒號:解決jQuery.ajax 中的JSONP 錯誤#get

當在jQuery.ajax 中遇到「意外的令牌冒號」錯誤時#get,了解JSONP(帶有Padding 的JSON)請求的本質很重要。 JSONP 涉及將 JSON 資料傳回客戶端的全域 JavaScript 函數呼叫。

要支援 JSONP,伺服器必須在回應中包含「Padding」。 「Padding」由回呼函數名稱後面跟著括號中的 JSON 資料組成:

jQuery111108398571682628244_1403193212453({"Name":"Tom","Description":"Hello it's me!"})

在此範例中,回呼函數名稱為 jQuery111108398571682628244_1403193212453。發生錯誤的原因是 JavaScript 將 JSONP 解析為 JavaScript,其中 {...} 也代表區塊。

要修正此錯誤,伺服器需要在回應中包含「Padding」。此外,jQuery 通常會包含一個帶有函數名稱的回呼查詢字串參數。為了適應這種情況,伺服器程式碼可以使用條件語句來檢查回呼參數並相應地發送回應:

var callback = req.query.callback;
var data = JSON.stringify({
    Name : "Tom",
    Description : "Hello it's me!"
});

if (callback) {
    res.setHeader('Content-Type', 'text/javascript');
    res.end(callback + '(' + data + ')');
} else {
    res.setHeader('Content-Type', 'application/json');
    res.end(data);
}

或者,ExpressJS 提供了一個已經處理此條件的res.jsonp() 方法,更容易回傳JSONP 回應:

app.get( '/', function( req, res ) {
    console.log( 'req received' );

    res.jsonp({
        Name : "Tom",
        Description : "Hello it's me!"
    });
});

以上是如何使用 jQuery.ajax#get 解決 JSONP 請求中的「意外令牌冒號」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn