因此,鉴于我无法同时在客户端中同时运行这两个帖子请求,因此我试图在第一篇文章的.then
部分中运行第二个帖子。这总是在我的其他项目上运作良好。但是由于某种原因,当第二次帖子请求发射我的服务器时,我没有回复。当我检查服务器的控制台时,我注意到它崩溃了,并且有一个错误消息(在这篇文章的底部)。
是什么可能导致这个?
我已经在服务器代码中的第二个帖子请求上放了断点,并且注意到断点甚至不会受到打击。服务器撞击之前崩溃并给我继续继续。
客户端代码(用户按下按钮时会发射):
$scope.searchCharacter = function(){
var request = {name: $scope.charName, realm: $scope.selectedRealm};
//First post request
$http.post('/searchCharacter', request)
.then(function(response) {
//sets some variables
var id = 0;
//Second post request
$http.post('/helloworld', id)
.then(function(response) {
//sets some more variables
debugger;
});
});
}
服务器代码:
//First post request
app.post('/searchCharacter', jsonParser, function (req, res) {
blizzard.wow.character(['profile', 'stats', 'items', 'statistics'], { origin: 'us', realm: req.body.realm.name, name: req.body.name })
.then(response => {
if(response.status != 200){
res.send("That character doesn't exist! Please enter a valid character name.");
} else {
console.log(response.data);
res.send(response.data);
}
});
});
//Second Post Request
app.post('/helloworld', jsonParser, function (req, res) {
console.log(req.body);
res.send("hello");
});
错误消息:
SyntaxError:意外令牌#
在object.parse(本机)
在createstrictsyntaxerror (c: users rdubz documents 访谈 eagledream 12-7-17 project node_modules body-parser lib types json.js:157:10)
在Parse(C: Users rdubz Documents Documents 访谈 EagleDream) 12-7-17 project node_modules body-parser lib types json.js:83:15)
at C: users rdubz documents 访谈 eagledream 12-7-17 project node_modules body-parser lib read.js:121:18
在InvokeCallback(C: Users rdubz Documents Documents 访谈 eagledream 12-7-17 project node_modules body-parser node_modules raw-body index.js:224:16)
完成(c: users rdubz documents 访谈 eagledream 12-7-17 project node_modules body-parser node_modules raw-body index.js:213:7)
in incomingmessage.onend (c: users rdubz documents 访谈 eagledream 12-7-17 project node_modules body-parser node_modules raw-body index.js:273:7)
在emitnone(event.js:67:13)
在incomingmessage.emit(Events.js:166:7)
在endReadablent(_Stream_readable.js:921:12)
尝试以下:
$scope.searchCharacter = function(){
var request = {name: $scope.charName, realm: $scope.selectedRealm};
//First post request
$http.post('/searchCharacter', request)
.then(function(response) {
//sets some variables
var id = 0;
//Second post request (append id to route).
$http.post('/helloworld/' + id)
.then(function(response) {
//sets some more variables
debugger;
});
});
}
//First post request
app.post('/searchCharacter', jsonParser, function (req, res) {
blizzard.wow.character(['profile', 'stats', 'items', 'statistics'], { origin: 'us', realm: req.body.realm.name, name: req.body.name })
.then(response => {
if(response.status != 200){
res.send("That character doesn't exist! Please enter a valid character name.");
} else {
console.log(response.data);
res.send(response.data);
}
});
});
//Second Post Request (get id from req.params.id)
app.post('/helloworld/:id', function (req, res) {
console.log(req.params.id);
res.send("hello");
});
它将id
附加到helloworld
请求,并使用req.params.id
定义路由helloworld/:id
以将ID从请求中拉出。
facePalm i使用var id = 0并将其传递给我的函数,而无需意识到它需要传递为对象或参数。感谢那些发表评论的人!