1

私は$.getJSONしばらくの間コマンドを使用してきました。しかし、私は実際にサーバーに投稿しているので、$.post を使用する必要があります。$.getJSONしかし、 からに切り替えるとすぐに$.post、Flask Python フレームワークであるバックエンドが JSON データを受信して​​いないようです。私が変えたのはそれだけです。$.postのドキュメントは、どちらのコマンドでもデータを送信するための形式が同じであることを示しているようです。

では$.getJSON、request.args.get コマンドを使用して Flask の JSON パラメーターにアクセスできました。しかし、$.post に変更した後、request.args は空です (したがって、request.args.get() は常に None を返します)。を含む JavaScript の行は次の$.getJSONとおりです。

$.getJSON("/admin/emails/ajax/send", {'data':JSON.stringify(data)}, function(){...})

そして、$.post(...)代わりにその行を想像してみてください。

EDIT問題は、「GET」から「POST」に変更すると、Flaskのrequest.argsオブジェクトからデータが消えることです。メソッドを使用してみました$.ajaxが、同じ結果になりました。理由を知っている人はいますか?

4

4 に答える 4

2

この獣のラップを解除して $.ajax を使用するだけで、ラッパーにつまずくことはありません。

$.ajax({
    type: 'POST',
    url: '/admin/emails/ajax/send',
    data: JSON.stringify(data),
    dataType: 'json',
    success: function(json){
        //the JSON response from the server
    }
});
于 2013-01-31T07:11:45.427 に答える
1

わかりました。「GET」メソッドで JSON データをサーバーに送信すると、Flask は JSON データをrequest.args. 代わりに、「POST」メソッドでデータを送信すると、Flask はデータを に入れますrequest.form。ちょっと紛らわしいですが、何でも。

于 2013-01-31T18:33:24.683 に答える
0

上記の答えは正しいですが、$.post を使用したい場合は、サーバー側に移動してヘッダーを追加する必要があります: "Content-type: app/json"(このようにググってください)

于 2013-01-31T07:14:31.570 に答える
0

この方法を試しましたか$.post

$.post("/admin/emails/ajax/send", {'data':JSON.stringify(data)}, function(data){
   console.log(data);
}, "json");
//-^^^^^^-----------are you putting dataType here.
于 2013-01-31T07:21:26.527 に答える