我试着从我的服务器端发送的数据与阿贾克斯我的客户端,但是当我使用节点res.send(数据),它显示我的数据空html和我想从我的客户端数据,而无需重新加载页面,并在我的实际HTML阿贾克斯不能与节点JS工作 - 快递JS
这里编辑的东西是我的服务器端代码
app.post('/',(req,res)=>{
var userName = req.body.username;
var password = req.body.password;
connection.query('SELECT * from admin',(err, rows, fields)=> {
if (!err){
if((userName == rows[0].usuario) && (password == rows[0].contraseña)){
res.sendStatus(200);
}else{
res.send('Incorrect username or password')
}
}else{
res.send('Error while performing Query.');
}
});
});
这里是我的客户端代码
$(document).ready(function(){
$('#login-form').submit(function (e) {
setTimeout(function() {
e.preventDefault();
$.ajax({
type: 'POST',
url: '/',
dataType: 'jsonp',
data: ({username: $('input[name=username]'),password: $('input[name=password]')}),
success: function(data,textStatus){
if(textStatus.statusCode == 200) {
$('.error-user').html('Succes');
}else{
$('.error-user').html('Not Success');
}
},
});
}, 1000);
});
});
更新:我删除了setTimeOut(),但当我提交表单页面冻结像两秒钟,然后什么也没有发生,我得到这个'错误最大调用堆栈大小超过',不要让我的数据只是留在相同的看法,如果像POST方法从来没有所谓
UPDATE决赛:我得到了阿贾克斯之外的输入值和它的作品很好,谢谢:#
添加错误处理程序Ajax调用。它也看起来像你不回发jsonp – epascarello
你为什么使用'setTimeout()'?这是问题的一部分。你的表单已经提交,并且在你运行你的ajax调用之前,在你调用'e.preventDefauilt()'之前,表单提交就会重新加载页面,所以调用的时间太晚了。除去'setTimeout()'或在'setTimeout()'之前放置'e.preventDefault()'。在任何一种情况下,'setTimeout()'看起来都像是一团糟的代码。如果你认为你正在修复某些东西,那么这是一个黑客攻击,你应该修正它的正确方法,并删除'setTimeout()'。 – jfriend00
外观更新问题 –