在编写API时,遇到了一个非常棘手的错误:当我尝试使用Content-Type标头application/json
(默认为大多数AJAX)执行res.send(INSERT JSON)
时,我得到一个invalid json
错误。当我将内容类型设置为其他任何内容时(例如text/plain
),我得到正确的响应,但为了使用某些前端框架,我需要支持application/json
。下面是实际的错误消息:无效的JSON GET请求Express.js
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'});
});
这里是我的邮差设置的画面 - 我使用的邮差的Chrome扩展程序来测试我的API:
该代码看起来很好,并且工作正常。什么是产生'无效的json'错误? – robertklep
当我使用'content-type'作为'application/json'进行GET请求时,我得到无效的JSON错误。我会在我的问题上加上实际的错误。 –
我认为这意味着您发送*到服务器*的数据不是有效的JSON。你如何测试这个(哪个客户端)? – robertklep