2016-03-23 8 views
1

$_POSTデータをPHPファイルに取得するには問題が発生しています。私の要求は投稿変数を送信しているので。ノードの要求約束を使用したJSON REST APIへのPOSTデータ

var rp = require('request-promise'); 

var options = { 
    method: 'POST', 
    uri: 'http://localhost/orangehrm_live/capacity-dashboard/getAllDetailsCapacity.php', 
    headers: { 
    'Content-Type': 'application/json; charset=utf-8', 
    'Content-Length': dataString.length 
    }, 
    body: { 
     some: 'payload' 
    }, 
    json: true // Automatically parses the JSON string in the response 
}; 

rp(options) 
    .then(function (repos) { 
     console.log('User has %d repos', repos.length); 
     if (repos) { 
      res.send(repos); 
     } else { 
      res.sendStatus(404); 
     } 
    }) 
    .catch(function (err) { 
     res.status(400).send(err); 
    }); 

私のPHPファイルには次のコードが含まれています。

<?php 
class getAllDetailsCapacity{ 
    public function getChartRawData(){ 
     //$data = array('message' => 'HeLLO'); 


     $json = json_encode($_POST); 
     print_r($json); 
    } 

} 

function node_dispatch() { 
     $obj=new getAllDetailsCapacity(); 
     if(isset($_POST)) { 
      $obj->getChartRawData(); 
     } 
     else { 
      echo "You are in Admin Mode. Switch back to normal mode to serve your node app."; 
     } 
} 

node_dispatch(); 
?> 

それは、そのノードの機能のリクエスト約束のボディにポスト値を得ていないとしてelse文を示しています。

答えて

0

$ _POSTは、キーと値のペアが含まれている場合に、ポスト本体を受け取ります。 本文にURLエンコードしたい値でPOSTする必要があります。

HTTPリクエストは、次のようになります。

POST /path/to/file.php HTTP/1.1 
... 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 32 

foo=bar&bar+baz=foo 
+0

ヘッダーは追加されていますが、データはまだ投稿されていないため、私の編集したコードを参照してください –

0

ただ、ヘッダに追加し、代わりに体の形のパラメータを追加します。あなたのデータはPHPファイルに投稿されます。

headers: { 
      'content-type': 'application/x-www-form-urlencoded' 
     }, 
     form: { 
      some: dataString // Will be urlencoded 
     }, 
0

content-typeヘッダには、サーバが期待している何かにあなたのjavascriptオブジェクトを変換するための方法をライブラリに指示します。また、クライアントからのデータの形式をサーバーに伝えます。

コンテンツタイプのヘッダapplication/jsonを送信すると、ライブラリはリクエストをJSONに変換します。これは体を次のように変換します:{"some":"payload"}

コンテンツタイプヘッダーapplication/x-www-form-urlencodedを送信すると、本文はsome=payloadに変換されます。