Ajax不使用Node js - Express js

时间:2017-04-02 03:17:49

标签: javascript jquery node.js ajax

我尝试使用ajax从我的服务器端向客户端发送数据,但是当我在节点中使用res.send(数据)时,它会向我显示带有数据的空html,并且我想从客户端获取数据无需重新加载页面并在我的实际html中编辑内容

这是我的服务器端代码

    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-FINAL:我从ajax之外的输入中得到了值,并且效果很好,谢谢:#

4 个答案:

答案 0 :(得分:1)

删除setTimeout,这会阻止你的preventDefault在实际的事件处理程序中运行,并导致你在浏览器加载而不是ajax处理程序中看到响应,并从那里进行调试。

答案 1 :(得分:1)

您忘了:data: ({username: $('input[name=username]').val(), password: $('input[name=password]').val() }), 发送输入值:

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

和NOT:

.collapse{
   display: inline-block;
 }

答案 2 :(得分:0)

Preventdefault正在制造问题。您可以删除它以运行Ajax调用

答案 3 :(得分:0)

如果我理解正确,您可能正在使用请求方法。

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

要在提交表单时向节点发送请求,您经常会从客户端js发送请求,以便对节点服务器上的数据库进行持久更改。根据您希望实现的目标,您应该使用POSTPUTPATCHDELETE方法。

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