4

次の問題があります。

私は Flask アプリケーションで作業しており、AJAX 経由でサーバーにデータを渡したいと考えています。私はこの AJAX のことについてかなり新しいので、何かを正しくすることができません。

クライアント側では、ユーザーがアイコンをクリックしたときに、変数メッセージに保存されているjQuery.postを介してデータを渡したいと考えています。

jQuery("#icon_ID").click(function() {
    var message = {
        'GRAPH_TYPE': graphType
    };
    var _sendOnSuccess = function () {
    }

    var jqxhr = jQuery.post('/graph', message, _sendOnSuccess, 'json');
});

私のサーバー側には、次のコードがあります。

@app.route('/graph', methods = ['POST'])
@login_required
def physical_graph():
    ret_data = request.form['GRAPH_TYPE']
    return ""

今のところやりたいことは、サーバー側の GRAPH_TYPE にアクセスすることだけです。ただし、アイコンをクリックすると、次のエラー メッセージが表示されます。

メソッドは許可されていません

要求された URL に対してメソッド GET は許可されていません。

実際には POST メソッドを使用しているのに、Python が GET メソッドを使用していると表示する理由がよくわかりません。

誰かがこれで私を助けてくれますか? この問題を解決するにはどうすればよいですか? 他に使える方法がありましたら、何でもいいのでアドバイスをお願いします。jQuery 以外に、他の JavaScript ライブラリを使用したくないことに注意してください。

前もって感謝します!

4

1 に答える 1

1

それはあなたが次のように通過しているからobjectですdata

var message = {
    'GRAPH_TYPE': graphType
};

この場合jQuery、オブジェクトをURLエンコードしようとし、デフォルトではデータ型で送信し、application/x-www-form-urlencoded; charset=UTF-8ansはGETリクエストを送信します。この問題を克服するjQueryには、データパラメータの文字列を渡していることを確認してください。これを行うには、次のJSON.stringifyように使用できます。

var message = JSON.stringify({ "GRAPH_TYPE": graphType });
于 2013-03-23T23:43:55.427 に答える