2017-06-23 12 views
0

So habe ich diese POST-Anfrage ichGesuch kehrt auf der Serverseite undefined

gemacht
$("#pacotes").on('click', ".produto", function() { 
    console.log(this.id); 
    $.post("http://localhost:3000/pacote?idPacote=" + this.id); 
}); 

Das Protokoll gibt eine Zahl auf der Client-Seite, wie es sollte.

Die Post dann durch meine Strecke geht und hier

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); 
    } 
    }; 
    }); 
} 

Das erste Protokoll kommt nur eine Fahne zu sehen, ob er den Punkt erreicht, die es ist aber das zweite Protokoll eine Zahl zurückgeben sollte, aber es ist zurück undefined

Ich bin nicht sehr erfahren in diesem Thema, aber das hat immer für mich gearbeitet. Ich verstehe nicht, wo ich anders ging, da meine Login-Funktion fast die gleiche Sache ist und die tatsächlichen Werte wie erwartet zurückgibt. Vielleicht wegen BodyParser, aber ich weiß es nicht.

Es stört mich nur, dass die ID richtig auf der Client-Seite gibt, aber als nicht definiert auf der Serverseite

Ich habe auch versucht das Gleiche, aber mit GET und die Ergebnisse didnt

+0

Bitte poste hier deine Routenbeschreibung. –

Antwort

0

ändern Sie passieren " idPacote "in Abfragezeichenfolge. Sie erhalten die Parameter der Abfragezeichenfolge in "req.query", wenn Sie Express mit NodeJS verwenden. Versuchen Sie diese

var pacote = req.query.idPacote; 

statt

var pacote = req.idPacote; 
+0

das hat funktioniert, danke – Rui

0

Die var pacote = req.idPacote; sollte ersetzt werden (vorausgesetzt, dass Sie es als GET Parameter senden):

var pacote = req.params.idPacote; 

Eine Randnotiz: sollten Sie verwenden Verbindung Pooling, um die Leistung in Ihrer App zu verbessern, zum Beispiel:

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); 
      } 
     });   
    }; 
} 

Lesen Sie mehr here.