邮件请求在服务器端返回未定义

时间:2017-06-23 19:15:24

标签: javascript jquery mysql node.js post

所以,我有这个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并且结果没有改变

2 个答案:

答案 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