14

次のようなデータ構造があります。

ここに画像の説明を入力

$.ajax でサーバーに送信しようとしています:

$.ajax({
    type: 'POST',
    data: post_obj, //this is my json data
    dataType: 'json',
    url: '',
    success: function(e){
       console.log(e);
    }
});

フラスコでサーバーに入れたい:正常に動作しtitle = request.form['title'] ています!

しかし、どうすれば入手できcontentますか?

request.form.getlist('content')動作しません。

これは、firebug の投稿データです。

ここに画像の説明を入力

どうもありがとう:D

4

2 に答える 2

17

JSON ではなくクエリ文字列としてエンコードされたデータを送信しています。Flask は JSON でエンコードされたデータを処理できるため、そのように送信する方が理にかなっています。クライアント側で行う必要があるのは次のとおりです。

$.ajax({
    type: 'POST',
    // Provide correct Content-Type, so that Flask will know how to process it.
    contentType: 'application/json',
    // Encode your data as JSON.
    data: JSON.stringify(post_obj),
    // This is the type of data you're expecting back from the server.
    dataType: 'json',
    url: '/some/url',
    success: function (e) {
        console.log(e);
    }
});

サーバー側では、データは次の方法でアクセスされますrequest.json(既にデコードされています)。

content = request.json['content']
于 2013-02-26T11:36:30.010 に答える
2

contentjQuery によって送信された POST を調べると、実際には として渡されていることがわかりますcontent[]。Flask のrequestオブジェクトからアクセスするには、 を使用する必要がありますrequest.form.getlist('content[]')

として渡したい場合は、呼び出しcontentに追加できtraditional: trueます$.ajax()

これに関する詳細は、http://api.jquery.com/jQuery.ajax/の「データ」セクションと「従来の」セクションにあります。

于 2013-02-26T03:33:33.020 に答える