”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何使用 jQuery.ajax#get 解决 JSONP 请求中的“意外令牌冒号”错误?

如何使用 jQuery.ajax#get 解决 JSONP 请求中的“意外令牌冒号”错误?

发布于2024-11-02
浏览:947

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!"
    });
});
版本声明 本文转载于:1729349598如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3