2017-04-02 95 views
0

我试着从我的服务器端发送的数据与阿贾克斯我的客户端,但是当我使用节点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决赛:我得到了阿贾克斯之外的输入值和它的作品很好,谢谢:#

+0

添加错误处理程序Ajax调用。它也看起来像你不回发jsonp – epascarello

+0

你为什么使用'setTimeout()'?这是问题的一部分。你的表单已经提交,并且在你运行你的ajax调用之前,在你调用'e.preventDefauilt()'之前,表单提交就会重新加载页面,所以调用的时间太晚了。除去'setTimeout()'或在'setTimeout()'之前放置'e.preventDefault()'。在任何一种情况下,'setTimeout()'看起来都像是一团糟的代码。如果你认为你正在修复某些东西,那么这是一个黑客攻击,你应该修正它的正确方法,并删除'setTimeout()'。 – jfriend00

+0

外观更新问题 –

回答

1

删除这是防止你的preventDefault从实际运行的setTimeout事件处理程序,并导致您在浏览器负载中而不是ajax处理程序中查看响应,然后从中进行调试。

+0

如果我这样做,页面冻结了一会儿,然后什么都没有发生,它给了我这个错误='超过最大调用堆栈大小' –

+0

你可以添加信息到你的问题,如完整的代码和确切的错误消息?setTimeout绝对不正确..所以调用堆栈是修复 –

+0

看看更新的问题 –

0

Preventdefault正在创建问题。您可以删除运行Ajax调用

+0

仍然带我到另一个html –

0

如果我理解正确的话,你可能要使用的请求方法。

要从节点服务器的数据检索数据的页面完成加载时,你应该使用GET方法。

要发送当表单提交您经常会发送从客户端JS的请求作出的节点服务器上的数据库的持久变化节点的请求。根据你想实现什么,你应该使用POSTPUTPATCHDELETE方法。

这些方法通常会创建,更新,更新数据集的一部分,或从SQL或可用的NoSQL数据库到您的节点服务器中删除记录或文件。

+0

我不能使用GET方法,因为信息是来自用户的用户名和密码 –

1

你忘了:.val()发送的输入值:

data: ({username: $('input[name=username]').val(), password: $('input[name=password]').val() }), 

和NOT:

data: ({username: $('input[name=username]'),password: $('input[name=password]')}),