意外的令牌冒號:解決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中文網其他相關文章!