在Node.js Express站点上使用Jquery Ajax帖子
到目前为止,我所做的表单post请求都可以正常工作,但是当我尝试进行Ajax调用时,我无法在服务器上处理它。虽然它返回'succeed'参数,但我无法将信息保存在数据库中,也无法在服务器上对其进行任何更改 page.jade:在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');
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.
});