jQuery.ajax#get 中出现意外的令牌冒号 JSON
问题:
使用时jQuery.ajax#get 从 Node.js API 检索 JSON 数据时,Chrome 中出现“Unexpected token :”错误。
Context:
调查:
检查 Chrome 中的错误表明 JSON 响应包含意外的冒号 (:)。
解决方案:
启用 JSONP 支持:
出现此问题的原因是客户端期望 JSONP 响应,该响应是封装在 JavaScript 函数调用中的 JSON 数据。要启用 JSONP 支持,服务器必须在响应中包含“Padding”(“P”)。
<code class="text">jQuery111108398571682628244_1403193212453({"Name":"Tom","Description":"Hello it's me!"})</code>
服务器端代码修改:
至要在 Node.js Express 中支持 JSONP,请修改服务器代码如下:
const express = require('express'); const app = express(); app.get('/', (req, res) => { const callback = req.query.callback; const data = { Name: "Tom", Description: "Hello it's me!" }; if (callback) { res.setHeader('Content-Type', 'text/javascript'); res.end(callback + '(' + JSON.stringify(data) + ')'); } else { res.json(data); } });
或者:
使用 ExpressJS 内置的 res.jsonp() 方法:
const express = require('express'); const app = express(); app.get('/', (req, res) => { res.jsonp({ Name: "Tom", Description: "Hello it's me!" }); });
客户端代码修改:
客户端无需修改。默认情况下,jQuery 将传递带有函数名称的回调查询字符串参数。
以上是如何解决使用 jQuery.ajax 从 Node.js 获取 JSON 时出现的'意外令牌:”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!