jquery - 如何从 flask 中的 'ImmutableMultiDict'获取数据

标签 jquery python ajax flask

我正在学习如何使用 ajax 和 Flask,所以我要做的是发送一个 ajax 请求,然后在我的 python 文件中以 post 请求的形式接收数据

我的 html 文件包含这段代码

var data = {"name":"John Doe","age":"21"};
$.ajax({
  url:'/post/data',
  datatype : "json",
  contentType: "application/json; charset=utf-8",
  data : JSON.stringify(data),
  success : function(result) {
    jQuery("#clash").html(result); 
  },error : function(result){
     console.log(result);
 }
});

我的 python 文件包含:

@app.route('/post/data',methods=['GET','POST'])
def postdata():
  #do some
  data = str(request.args)
  json_dumps = json.dumps(data)
  return json_dumps

这给了我页面上的以下数据

"ImmutableMultiDict([('{\"name\":\"John Doe\",\"age\":\"21\"}', u'')])"

这就是我的request.query_string {%22name%22:%22John%20Doe%22,%22age%22:%2221%22}

那么如何获取姓名年龄。如果我在任何地方都错了,请纠正我。提前致谢。

最佳答案

您实际上不需要从 ImmutableMultiDict 获取数据。您所拥有的内容中有几个错误阻止您将响应作为 json 数据拉取。首先,您必须稍微调整 ajax 调用的参数。您应该将调用类型添加为 POST。此外,datatype 应拼写为 dataType。你的新电话应该是:

var data = {"name":"John Doe","age":"21"};
$.ajax({
    type: 'POST',
    contentType: 'application/json',
    url: '/post/data',
    dataType : 'json',
    data : JSON.stringify(data),
    success : function(result) {
      jQuery("#clash").html(result); 
    },error : function(result){
       console.log(result);
    }
});

数据现在实际上是作为 json 类型的 post 请求发送的。在 Flask 服务器上,我们现在可以读取数据作为子信息,如下所示:

@app.route('/post/data',methods=['GET','POST'])
def postdata():
    jsonData = request.get_json()
    print jsonData['name']
    print jsonData['age']
    return "hello world" #or whatever you want to return

这将成功打印 John Doe21

如果这对您有用或者您有任何其他问题,请告诉我!

编辑:您可以按如下方式将成功返回给来自 flask 的 ajax 调用:

# include this import at the tomb
from flask import jsonify

@app.route('/post/data',methods=['GET','POST'])
    def postdata():
        ...
        return jsonify(success=True, data=jsonData)

关于jquery - 如何从 flask 中的 'ImmutableMultiDict'获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29091070/

相关文章:

javascript - 如何让画廊自动移动

php - 从 php/mysql 自动完成中获取值

Python amqp 断管错误

javascript - 在 ExtJS 中中止 Ajax 请求

php - 带有单选按钮的表单提交到 mysql

javascript - jQuery 似乎无法在函数内工作

javascript - 如何使用 jQuery 在用户选择的文本行中的 <textarea> 末尾添加图像

python - numpy 与多处理和 mmap

python - Python 中零的对数

ajax - 如何在使用 AJAX 更新时保存(保留)浮点图的缩放状态