我怎样才能使用从ajax发布的数据?
我无法从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
variables中有一些有意义的数据。 但在Ajax视图request.form是空的。 我的数据在哪里提交?
尝试
$.ajax({ type : "POST", url : "{{ url_for('mod.load_ajax') }}", data: JSON.stringify(data, null, '\t'), contentType: 'application/json;charset=UTF-8', success: function(result) { console.log(result); } });
然后从服务器,你可以参考这样的数据variables:
request.json['foo']
由于内容types被指定为application/json
所以数据在request.json
根据您的示例,您不是发送键值对,而是将jsonstring分配给jQuery数据选项。 正如在注释中提到的,你必须将你的JSON串联起来,用一个关键字创build一个对象(这个关键字将被用来从容器中访问JSONstring),然后把它分配给jQuery数据关键字。
$.ajax({ type : "POST", url : "{{ url_for('mod.load_ajax') }}", data: {json_str: JSON.stringify(data)}, contentType: 'application/json;charset=UTF-8', success: function(result) { console.log(result); } }); @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['json_str'] )
你有没有尝试删除contentType? 你想把数据发布到Flask。
你可以尝试添加像这样的假数据
数据:{“hello”:“world”}里面的Ajax? 只是为了检查hello world是否到达request.form