首頁 > web前端 > js教程 > 主體

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

Linda Hamilton
發布: 2024-10-19 22:54:02
原創
1076 人瀏覽過

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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板