意外的令牌冒号:解决 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中文网其他相关文章!