所以,我有这个POST请求
$("#pacotes").on('click', ".produto", function () {
console.log(this.id);
$.post("http://localhost:3000/pacote?idPacote=" + this.id);
});
日志在客户端返回一个数字,应该如此。
然后帖子经过我的路线到达这里
exports.Pacote = function (req, res) {
console.log("gato");
var pacote = req.idPacote;
console.log(pacote);
connection.connection();
global.connection.query('SELECT * FROM Pacote WHERE idPacotes = ? LIMIT 1', [pacote], function (err, result) {
if (result.length > 0) {
if (result) {
var object = JSON.parse(JSON.stringify(result));
var packObject = object[0];
if (result.length > 0) {
if (result) {
res.render('home', { title: 'pacote', layout: 'pacote', data: packObject });
}
}
} else if (err) {
console.log(err);
}
};
});
}
第一个日志只是一个标志,用于查看它是否到达该点 但是第二个日志应该返回一个数字,但它返回undefined
我在这个问题上没有很多经验,但这一直对我有用。 我不明白我的去向不同,因为我的登录功能几乎是一样的,并且按预期返回实际值。也许是因为体型运动员,但我不知道。
令我困扰的是,id在客户端正确返回,但在服务器端未定义
我也尝试了同样的事情,但使用GET并且结果没有改变
答案 0 :(得分:0)
你正在传递" idPacote"在查询字符串中。您将在" req.query"中获取查询字符串参数。如果你使用Express与NodeJS。试试这个
var pacote = req.query.idPacote;
而不是
var pacote = req.idPacote;
答案 1 :(得分:0)
var pacote = req.idPacote;
应替换为(假设您将其作为GET
参数发送):
var pacote = req.params.idPacote;
附注:您应该使用连接池以提高应用中的效果,例如:
var mysql = require("mysql");
//Database connection parameters
var config = {
connectionLimit: 10000,
host: "127.0.0.1",
user: "user",
password: "password",
database: "database",
charset: "utf8_general_ci",
connectTimeout: 4000
};
//Pool
var pool = mysql.createPool(config);
function connection(){
//Assign connection pool for further reuse
this.init = function () {
this.pool = pool;
};
//Get connection
this.acquire = function(callback){
this.pool.getConnection(function(error, con){
if (error) {
if (this.pool)
//Close all connections in pool
this.pool.end(function(err){});
console.log("\x1b[31m" + error, "\x1b[0m");
}
else {
callback(error, con);
}
});
};
}
了解更多here。