Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Node.js Express站点上使用Jquery Ajax帖子_Jquery_Ajax_Node.js - Fatal编程技术网

在Node.js Express站点上使用Jquery Ajax帖子

在Node.js Express站点上使用Jquery Ajax帖子,jquery,ajax,node.js,Jquery,Ajax,Node.js,到目前为止,我所做的表单post请求都可以正常工作,但是当我尝试进行Ajax调用时,我无法在服务器上处理它。虽然它返回'succeed'参数,但我无法将信息保存在数据库中,也无法在服务器上对其进行任何更改 page.jade: script (function () { $('ul').find('a').on("click", function () { var option = $(this).data('res');

到目前为止,我所做的表单post请求都可以正常工作,但是当我尝试进行Ajax调用时,我无法在服务器上处理它。虽然它返回'succeed'参数,但我无法将信息保存在数据库中,也无法在服务器上对其进行任何更改

page.jade:

script
        (function () {

            $('ul').find('a').on("click", function () {
                var option = $(this).data('res');
                $('article').animate({ 'margin-left': -600 });
                console.log(option + ' ' + #{idn});

                var envio = {resultado: option, idupdate: #{idn}};

                $.ajax({
                        url: '/',
                        type: "post",
                        data: JSON.stringify(envio),
                        contentType: 'application/json',
                        success: function(data) {
                            console.log('success');
                        }
                    });
            });
        })();
server.js

app.post('/', function (req, res) {

    var Resultado = req.body.resultado;
    var idUpdate = req.body.idupdate;

    if (Resultado == "yes") {
        connection.query('UPDATE questions SET yes=yes+1 WHERE id=' + idUpdate + ');');
    } else {
        connection.query('UPDATE questions SET no=no+1 WHERE id=' + idUpdate + ');');
    }
});

我试图找到任何类似的情况,但关于这个特殊案件的信息是稀缺的。谢谢

看起来两个查询的格式都不正确

connection.query('UPDATE questions SET yes=yes+1 WHERE id=' + idUpdate + ');');
                                                           (here)   ----^   
connection.query('UPDATE questions SET no=no+1 WHERE id=' + idUpdate + ');');
                                                     (and here)   ----^ 
然后,删除
+');'零件,它应该可以工作

比如:

另外,您需要调用
res.end()

最终代码:

app.post('/', function (req, res) {

    var Resultado = req.body.resultado;
    var idUpdate = req.body.idupdate;

    if (Resultado == "yes") {
        connection.query('UPDATE questions SET yes=yes+1 WHERE id=' + idUpdate);
    } else {
        connection.query('UPDATE questions SET no=no+1 WHERE id=' + idUpdate);
    }
    res.end(); // must be called.
});

是的!就这样!谢谢@3boll!现在查询正在写入数据库,但我不会将success参数返回到控制台。有什么想法吗?注意,这个查询对SQL注入非常开放。您应该使用准备好的语句或使用
connection.escape(idUpdate)
转义ID。示例:提交ID为
1或1=1
将更新每个问题的“是”计数。@3boll,谢谢!!太好了@loganfsmyth,你能告诉我一篇关于它的好文章吗?谢谢
app.post('/', function (req, res) {

    var Resultado = req.body.resultado;
    var idUpdate = req.body.idupdate;

    if (Resultado == "yes") {
        connection.query('UPDATE questions SET yes=yes+1 WHERE id=' + idUpdate);
    } else {
        connection.query('UPDATE questions SET no=no+1 WHERE id=' + idUpdate);
    }
    res.end(); // must be called.
});