2

nodeJS Express フレームワークは初めてです。以下を使用して送信した POST リクエストを使用しています。

router.post('/', function(req, res) {
    var data = Object.getOwnPropertyNames(req.body)[0];
});

クライアントからこのデータを次の方法で送信しました。

$.ajax({
    url: "write_to_region",
    type: "POST",
    data: JSON.stringify(grid)
});

ここで、「グリッド」は値の 2 次元配列です。私のエクスプレスボディパーサーは次のように構成されています:

app.use(bodyParser.urlencoded({limit: '50mb', extended: false }));

これを行うためのより良い、またはより慣用的な方法は何ですか? 配列はやや大きく (10kb)、整数しか含まれていないことに注意してください。理想的には、リクエストで送信されるデータの量を最小限に抑えます。ありがとう!!

4

1 に答える 1

1

問題は、適切な を設定していないことですContent-Type。Jquery のContent-Typeing POSTdata のデフォルトはapplication/x-www-form-urlencoded. そのため、ボディ パーサーはリクエスト データの読み取りを開始=し、「キー」がいつ終了して「値」が開始するかを知るために を探します。が見つからない=ため、キー名に追加し続けます。

これを修正するには、構成に次のオプションを追加する必要があります$ajax()

contentType: "application/json; charset=utf-8",
dataType: "json",

bodyParser.json()ミドルウェアを追加します。

app.use(bodyParser.json());
于 2014-10-30T22:20:41.767 に答える