在jQuery.post中,出现消息:请求的URL不允许使用GET方法
我遇到了一个问题:
我在做一个Flask应用程序,想通过AJAX把一些数据传给服务器。因为我对AJAX还不太熟悉,所以有些地方搞不清楚。
在客户端,当用户点击一个图标时,我想通过 jQuery.post 把存储在变量 message: 中的数据传过去:
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库。
提前谢谢大家!
1 个回答
1
这是因为你把一个 对象
作为 数据
传递,像这样:
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 });