我怎样才能使用从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中的datavariables中有一些有意义的数据。 但在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