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 方法。

我真的不明白为什么 Python 告诉我我正在使用 GET 方法,而实际上我正在使用 POST 方法。

请有人帮我解决这个问题吗?我应该怎么做才能解决这个问题?如果我可以使用其他方法,请随时给我任何建议。请记住,除了 jQuery,我不想使用其他 JavaScript 库。

先感谢您!

4

1 回答 1

1

这是因为你正在传递一个objectas datalike

var message = {
    'GRAPH_TYPE': graphType
};

在这种情况下jQuery,尝试对对象进行 URL 编码,默认情况下使用数据类型application/x-www-form-urlencoded; charset=UTF-8ans 发送GET请求。要克服这个问题,请确保您jQuery为 data 参数传递了一个字符串,为此您可以使用JSON.stringifylike

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