首页 > web前端 > js教程 > 如何使用 jQuery.ajax#get 解决 JSONP 请求中的'意外令牌冒号”错误?

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

Linda Hamilton
发布: 2024-10-19 22:54:02
原创
1112 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板