微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax – 无效的JSON GET请求Express.js

在编写API时,我遇到了一个非常棘手的错误:当我尝试使用Content-Type头应用程序/ json(大多数 AJAX认值)执行res.send(INSERT JSON)时,我得到一个无效的json错误.当我将内容类型设置为其他任何内容(例如text / plain)时,我得到正确的响应,但是为了使用一些前端框架,我需要支持application / json.这是实际的错误消息:

Error: invalid json
    at Object.exports.error (/Users/Brad/node_modules/express/node_modules/connect/lib/utils.js:44:13)
    at IncomingMessage.module.exports (/Users/Brad/node_modules/express/node_modules/connect/lib/middleware/json.js:68:73)
    at IncomingMessage.EventEmitter.emit (events.js:85:17)
    at IncomingMessage._emitEnd (http.js:366:10)
    at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
    at Socket.socket.ondata (http.js:1680:22)
    at TCP.onread (net.js:410:27)

我的服务器代码如下:

app.configure(function () {
  app.use(express.bodyParser());
  app.use(express.cookieParser('SALT'));
  app.use(express.static(__dirname + '/static/'));
  app.use(express.session());
});

app.get('/users',function(req,res) {
  res.send({'test': 'test'});
});

这是我邮差设置的图片 – 我使用Postman Chrome扩展来测试我的API:

解决方法

我认为问题在于您希望在服务器响应中使用Content-Type标头;不在你的请求内容类型标题.

当您在请求中使用Content-Type标头时,Express将读取Content-Type并尝试将提供的信息解释为Content-Type,在本例中为JSON.因为这是一个GET请求,因此没有正文,所以Express试图将空字符串解释为JSON,这会给你错误.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐