2017-01-19 5 views
0

JSONオブジェクトを変数に取得しようとしています。文字列のfacebookのチャットボットで待たなければならない時間を表示しようとしています。私は様々な方法を試してみましたが、スタックオーバーフローやブログ投稿で見つかった他の方法も試しましたが、未定義のまま返されます。NODEJSのPOSTリクエストは未定義のままです

var waitingTime = request.post(
    "https://mypage.com/data/data/responsetime", 
    { 
     form: { 
      'key': 'value' 
     } 
    }, 
    function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
      JSON.parse(body.responsetime) 
      console.log(response) 
     } 
    } 
); 
+1

チェック 'ERROR'と応答であってもよいです応答はない200 –

答えて

0

私はあなたが本当にJSON.parse(body.responetime)代わりのJSON.parse(body.responsetime)を書いた場合は(あなたがresponsetimeをスペルミス)知りませんが、それはあなたのundefined問題を引き起こす可能性があります! PS:これは間違いだと思ってあなたの投稿を編集しました(私はそれが願っています:P)。

これが問題ではないとしても、あなたのコードはほぼ正しいと思います。しかし、requestの仕組みやコールバックの仕組みを理解する必要があります。 request.post()を使用すると、非同期呼び出しが行われます。結果が必要な場合は、プロセスの終了を待つ必要があります。そのため、第3のパラメータとして関数request.post(address, data, callback)を指定します。

あなた var waitingTimeを初期化したい場合次に、あなたはコールバックでそれを初期化する必要があり

:要求中にエラーが発生したかどうかを確認するために

var waitingTime = null; 

request.post(
    "https://mypage.com/data/data/responsetime", 
    { 
     form: { 
      'key': 'value' 
     } 
    }, 
    function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
      waitingTime = JSON.parse(body.responsetime); 
      // Now you can use the waitingTime variable. 
     } 
    } 
); 
+0

ありがとうポール、ええ、私はスペルミスに気づいた!しかし、それはそれではなく、助言のおかげです! – Daan

+0

Cool :)私のソリューションがあなたの問題を解決することを願っています。 'コールバック 'がどのように働いているのか、今理解していますか?あなたが詳細を必要とするなら、私は説明するために5分以上かかることができます:) –

関連する問題