意外的令牌冒号:解决 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!" }); });
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3