问题描述
我无法从 jquery ajax 获取数据.
I'm having trouble getting data POSTed from jquery ajax.
$('#clickme').click( function() {
var data = save_input(); // data
data['_sid'] = $survey_id; // survey_id injected from flask
data['_uip'] = $user_ip; // user_ip injected from flask, request.remote_addr
$.ajax({
type : "POST",
url : "{{ url_for('mod.load_ajax') }}",
data: JSON.stringify(data),
contentType: 'application/json;charset=UTF-8',
success: function(result) {
console.log(result);
}
});
console.log(data);
});
从代码来看,data
是一个javascript对象,如
from the code, data
is a javascript object like
{
'foo' : 'foo',
'bar' : 'bar',
'fo_' : 42,
}
我想在烧瓶中做的是:
@mod.route('/load_ajax', methods=["GET", "POST"])
def load_ajax():
if request.method == "POST":
# load _sid and _uip from posted JSON and save other data
# but request.form is empty.
# >>> request.form
# ImmutableMultiDict([])
return str(request.form)
看,ajax请求发出了,但是没有提交数据.我用ajax做console.log(data)
,所以我可以看到我在jquery的data
变量中确实有一些有意义的数据.但是 ajax 视图中的 request.form 是空的.我的数据在哪里提交?
see, the ajax request is made but no data is submitted. I do console.log(data)
with ajax so I can see that I really have some meaningful data in data
variable in jquery. but request.form in ajax view is empty. Where is my data submitted?
推荐答案
尝试
$.ajax({
type : "POST",
url : "{{ url_for('mod.load_ajax') }}",
data: JSON.stringify(data, null, ' '),
contentType: 'application/json;charset=UTF-8',
success: function(result) {
console.log(result);
}
});
然后从服务器,你可以像这样引用数据中的变量:
Then from the server, you can refer to the variables in data like this :
request.json['foo']
由于内容类型被指定为 application/json
,所以数据在 request.json
Since the content type is specified as application/json
the data is in request.json
这篇关于如何在flask中使用从ajax发布的数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!