获得一个带有ajax脚本的注册表单,POST到nodejs后端。 问题是在执行“错误”或(有时!)“成功”事件之前,ajax请求会挂起最多30-60秒。如果设置了超时,则在3秒后触发错误。节点后端立即将结果写入控制台。 ajax或后端有问题吗?
HTML:
<form id="add" action="" class="col-md-3">
<div class="form-group">
<label class="input">username</label>
<input type="text" name="username" id="username">
</div>
<div class="form-group">
<label class="input">pass</label>
<input type="password" name="pass" id="pass" class="">
</div>
<div class="form-group">
<input type="hidden" name="new" value="new" id="new">
<input type="hidden" name="role" value="admin" id="role">
</div>
<div id="submit" class="btn">Add</div>
JQuery的:
$(function () {
$('#submit').on('click', function() {
var form = $('#add');
var data = {"username":$('#username').val(), "password": $('#pass').val() , "role": $('#role').val(), "new": $('#new').val()}
alert ('ajax start: ' + JSON.stringify(data));
$.ajax({
url: '/add',
type: 'POST',
data: data,
// timeout : 3000,
success: function(responseText, statusText, xhr) {
console.log("Worked!" + responseText);
alert ('success');
},
complete: function() {
alert ('complete');
},
error: function(err) {
console.log('err:');
console.log(err);
alert ('err: ' + err.statusCode() + " " + err.statusText);
}
});
});
});
处理请求的路由:
module.exports = function(req, res) {
if (req.body.hasOwnProperty("new")){
//add new user
console.log('new');
var Auth = app.locals.Auth;
Auth.register(req, function (err){
console.log('ended registration');
if (err){
console.log('err: ' + err + res);
res.json({"err":err});
}else{
console.log('successfully registered');
res.json({"success":'success'});
}
console.log('res.end');
res.end();
console.log('return');
return ;
});
答案 0 :(得分:1)
问题出在路线代码中:
res.end();
只需删除此行
答案 1 :(得分:0)
对我来说似乎没关系。实际上只有改变我可以建议你在响应中添加错误代码和成功代码。
成功:res.json(200, {"success": "success"});
错误:res.json(400, {"error": err});