我有以下问题:
我在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。但是,当我点击图标时,我收到错误消息:
不允许的方法
请求的网址不允许使用GET方法。
我真的不明白为什么Python告诉我我正在使用GET方法,而实际上我正在使用POST方法。
请有人帮我这个吗?我该怎么做才能解决这个问题?如果我可以使用其他方法,请随时给我任何建议。请记住,除了jQuery之外,我不想使用其他JavaScript库。
提前谢谢!
答案 0 :(得分:1)
这是因为您传递的object
为data
var message = {
'GRAPH_TYPE': graphType
};
在这种情况下,jQuery
尝试对对象进行URL编码,默认情况下,使用数据类型application/x-www-form-urlencoded; charset=UTF-8
发送并发送GET
请求。要解决此问题,请确保您为数据参数传递了jQuery
字符串,为此,您可以使用JSON.stringify
之类的
var message = JSON.stringify({ "GRAPH_TYPE": graphType });