2016-12-08 15 views
1

私は、クライアント側から次のAJAXポストコールを持っているからデータを取得できません。サーバー上 私は正常以下でDBにデータを挿入します。は、AJAX POST成功機能エクスプレス/ MySQLの

router.post('/', function(req, res) { 

console.log(req.body.homeTeam,req.body.awayTeam); 

var connection = mysql.createConnection(global.dbSettings); 
connection.connect(function(err,res) { 


    if (err) { 
     console.log(err); 
    } else { 
     console.log("connected."); 

     connection.query(
      "INSERT INTO game(homeTeam,awayTeam,game_date) VALUES (?,?,?)", 
      [req.body.homeTeam,req.body.awayTeam,req.body.date], 
      function (err, results) { 
       if (err) { 
        console.log(err); 
       } else { 
        console.log("Game Created with Game_ID:"+results.insertId); 
        console.log(req.body.homeTeam,req.body.awayTeam,req.body.date); 

       } 
      }); 


      connection.end(function (err) { 
       if (err) { 
        console.log("The connection could not be closed."); 
       } else { 
        console.log("The connection is closed."); 
       } 
      }); 
    } 


      }); 

     res.end(); 
}); 

データが正しく挿入されています。 insertId()関数は、results.insertIdがコンソールに出力しているように正しく動作しています。私はちょうどクライアントにそれを得ることができません。

私はクライアント側でこれが必要です。私はそれが成功関数でアクセス可能でなければならないと考えましたが、それはすべて「真」です。

誰かが私にこのことをクライアントに送る方法を教えてください。

答えて

0

送信していないが、応答を終了しているため、送信したばかりのデータはクライアントに戻ってきません。

req.bodyの中に返信するか、保存したばかりのものをすべて返信してください。 次の操作を行うことができます:res.send({homeTeam: req.body.homeTeam, ....}

ところで、あなたは「POST」を行っていますが、それを行うことでサーバーからデータを戻すことは意味がありません。あなたがするべきことは、クライアントに "200"という応答を送り、保存したデータでページを更新することです。200を受け取るとデータが保存されていることを知っているので、クエリを送信/送信する時間を無駄にしませんバック。

res.status(200).send('data saved'); 
+0

あなたの回答に感謝しますが、私が達成しようとしているのは最後に挿入された行の主キーを返すことです。ちょうどそのためのmySQL insertedId()が組み込まれた関数があります。その関数の鍵は、最後に挿入された行 "I"のIDを常に送信し、同じ接続内でそのIDを送信するということです。GETを使用するには、他の人が挿入した行のIDを渡すことができます。これは、上記のinsert文(results.insertedId)を含む関数内で私に利用可能ですが、私はどこにでも、クライアントに戻って返すことはできません。 –

+0

私がよく理解しているかどうかはわかりませんが、もしあなたが "POST"をする代わりに "GET"でデータを送信すれば、パラメータがURLに公開されます。次に、この主キーをクライアントに戻すだけです。そして、コールバック関数の 'else'文の中にこの応答を送るべきです。さもなければ、あなたはそのキーがそこにあることを保証できません。 –

関連する問題