发布请求在服务器端返回未定义

Posted

技术标签:

【中文标题】发布请求在服务器端返回未定义【英文标题】:Post request returns undefined on the server side 【发布时间】:2017-11-27 10:50:45 【问题描述】:

所以,我提出了这个 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

我在这个主题上不是很有经验,但这一直对我有用。 我不明白我的不同之处,因为我的登录功能几乎相同,并按预期返回实际值。也许是因为bodyparser,但我不知道。

id 在客户端正确返回但在服务器端未定义,这让我很困扰

我也尝试了同样的事情,但使用 GET 并且结果没有改变

【问题讨论】:

请在此处发布您的路线定义。 【参考方案1】:

您在查询字符串中传递“idPacote”。如果您将 Express 与 NodeJS 一起使用,您将在“req.query”中获得查询字符串参数。试试这个

var pacote = req.query.idPacote;

而不是

var pacote = req.idPacote;

【讨论】:

【参考方案2】:

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。

【讨论】:

以上是关于发布请求在服务器端返回未定义的主要内容,如果未能解决你的问题,请参考以下文章

Node.js + Express POST 请求返回未定义

React 服务器端渲染 AJAX setState() - 未定义文档

Apache Camel JMS - 异常未通过请求/回复返回给调用者

Redis 管道技术

Redis 管道技术

Redis其他教程