2017-04-10 10 views
0

私はこのようなポストを使用して要求を持つオブジェクトを投稿しようとしている - 要求POSTはオブジェクトを変更しますか?

function postData(data, cb) { 
    request.post({ 
     url: 'http://localhost:3001/datastream', 
     form: data, 
    }, (err, httpResponse, body) => { 
     cb(body); 
    }); 
} 

>

そして、オブジェクトは次のようになります。

{ 
    "tblPartsReport": { 
     "valid": true, 
     "message": "Execute SQL: SELECT * FROM tblPartsReport WHERE ID = (SELECT MAX(ID) FROM tblPartsReport); success !", 
     "records": [{ 
      "ResourceID": 61, 
      "TimeStamp": "2017-04-04T05:52:19Z", 
      "PNo": 0, 
      "ErrorID": 0, 
      "ID": 10174 
     }] 
    }, 
    "tblMachineReport": { 
     "valid": true, 
     "message": "Execute SQL: SELECT * FROM tblMachineReport WHERE ID = (SELECT MAX(ID) FROM tblMachineReport); success !", 
     "records": [{ 
      "ResourceID": 61, 
      "TimeStamp": "2017-04-04T05:52:19Z", 
      "AutomaticMode": true, 
      "ManualMode": false, 
      "Busy": false, 
      "Reset": false, 
      "ErrorL0": false, 
      "ErrorL1": false, 
      "ErrorL2": false, 
      "ID": 26562 
     }] 
    } 
} 

オブジェクトが有効とokですが、それを掲示した後この出来事である理由

console.log(req.body); 

{ 
    'tblMachineReport[valid]': 'true', 
    'tblMachineReport[message]': 'Execute SQL: SELECT * FROM tblMachineReport WHERE ID = (SELECT MAX(ID) FROM tblMachineReport); success !', 
    'tblMachineReport[records][0][ResourceID]': '61', 
    'tblMachineReport[records][0][TimeStamp]': '2017-04-04T05:52:19Z', 
    'tblMachineReport[records][0][AutomaticMode]': 'true', 
    'tblMachineReport[records][0][ManualMode]': 'false', 
    'tblMachineReport[records][0][Busy]': 'false', 
    'tblMachineReport[records][0][Reset]': 'false', 
    'tblMachineReport[records][0][ErrorL0]': 'false', 
    'tblMachineReport[records][0][ErrorL1]': 'false', 
    'tblMachineReport[records][0][ErrorL2]': 'false', 
    'tblMachineReport[records][0][ID]': '26562', 
    'tblPartsReport[valid]': 'true', 
    'tblPartsReport[message]': 'Execute SQL: SELECT * FROM tblPartsReport WHERE ID = (SELECT MAX(ID) FROM tblPartsReport); success !', 
    'tblPartsReport[records][0][ResourceID]': '61', 
    'tblPartsReport[records][0][TimeStamp]': '2017-04-04T05:52:19Z', 
    'tblPartsReport[records][0][PNo]': '0', 
    'tblPartsReport[records][0][ErrorID]': '0', 
    'tblPartsReport[records][0][ID]': '10174' 
} 

任意のアイデア:他の側にこのようになりますか?私もAxiosで試してみましたが、ポスト作業ができませんでした。私は普通のオブジェクトを投稿したいだけです。通常、私はjQuery AJAXを使用しています。

EDIT

: これは正しい方法:)

function postData(data, cb) { 
    request.post({ 
     url: 'http://localhost:3001/datastream', 
     json: true, 
     body: data, 
    }, (err, httpResponse, body) => { 
     cb(body); 
    }); 
} 

答えて

1

私はあなたがノードモジュールの要求を使用することを前提としていました。 フォームオプションではなくjsonオプションを使用する必要があります。 jsonをtrueに設定し、データをフォーム内に配置しないでください。

body - PATCH、POST、およびPUTリクエストのボディエンティティボディ。バッファ、文字列、またはReadStreamでなければなりません。 jsonがtrueの場合、bodyはJSON直列化可能オブジェクトでなければなりません。

フォーム - オブジェクトまたはクエリ文字列が渡されると、本文は値のクエリー文字列表現に設定され、Content-type:application/x-www-form-urlencodedヘッダーが追加されます。オプションを渡さないと、FormDataインスタンスが返されます(要求に応じてパイプされます)。上記の「フォーム」を参照してください。

https://github.com/request/request#requestoptions-callback

あなたの記事に含まれる出力は、限り私はPHPを覚えているし、他の純粋なサーバーサイドの言語は、この形式を好むようapplication/x-www-form-urlencodedの形式です。

+0

ありがとうございます。これは正しかった:)私は "json:true"と "body:data" –

関連する問題