【发布时间】:2013-02-01 06:20:14
【问题描述】:
我在获取从 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 的对象
{
'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 是空的。我的数据在哪里提交?
【问题讨论】:
-
将
JSON.stringify(data)更改为data看看会发生什么。 -
@Blender 我确实收到了数据。如何以 JSON 格式接收此内容?
-
你试过
request.json吗? -
@thkang 将其用作数据字符串:
"data=" + JSON.stringify(data);。