节点js:HTTP POST:错误:发送后无法设置标题
问题描述:
我正在制作GCM应用程序,所以当我需要服务器来匹配公平时。节点js:HTTP POST:错误:发送后无法设置标题
有一个由Node js创建的代码。
var http = require('http');
var express = require('express');
var app = express();
app.use(express.static('public'));
app.use(express.bodyParser());
app.use(app.router);
var gcm = require('node-gcm');
var message = new gcm.Message();
var message = new gcm.Message({
collapseKey: 'demo',
delayWhileIdle: true,
timeToLive: 3,
data: {
key1: '안녕하세요.',
key2: 'saltfactory push demo'
}
});
var server_access_key = '~';
var sender = new gcm.Sender(server_access_key);
var registrationIds = [];
var registration_id = '~-~-~-~-~~~-~';
// At least one required
registrationIds.push(registration_id);
app.post('/enroll',function(request,response){
var my_number = Number(request.param('myphonenumber'));
var another_number = Number(request.param('anotherphonenumber'));
console.log(my_number);
console.log(another_number);
response.send(my_number);
response.send(another_number);
response.json({success:1});
response.json({success:"my_number"});
response.json({success:"another_number"});
});
http.createServer(app).listen(52273,function(){
console.log('Server Running');
});
当我在POST-MAN执行POST,我得到什么浏览器和 我的终端显示此错误代码:
NaN
NaN
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (http.js:689:11)
at ServerResponse.res.setHeader (/Users/~)
at ServerResponse.res.set.res.header (/Users/~)
at ServerResponse.res.send (/Users/~)
at ServerResponse.res.json (/Users/~)
at /Users/~
at callbacks (/Users/~)
at param (/Users/~)
at pass (/Users/~)
at Router._dispatch (/Users/~)
NaN被通过
console.log(my_number);
console.log(another_number);
我造成的不知道为什么NaN印刷。我明明Insert键:myphonenumber,anotherphonenumber &值:12345678,98765432.
答
不能使用response.json或response.send方法超过一次
app.post('/enroll/:myphonenumber/:anotherphonenumber',function(request,response){
var my_number = Number(request.params.myphonenumber);
var another_number = Number(request.params.anotherphonenumber);
console.log(my_number);
console.log(another_number);
response.json({'my_number':my_number,'another_number':another_number,success:1});
});
尝试发送'response'只有一次,你可以创建一个普通的对象并存储所有的数据。所以不要在调用中多次使用'.send'或'.json'。关于'NaN',我认为你没有得到响应,请尝试'request'对象上的'console.log'。 – Ravi 2014-10-07 09:20:05