Flask请求.json到di

2024-06-23 03:36:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力使用JQuery ajax方法和Flask,试图通过ajax调用来检索一些表单。

我的js代码如下:

$.ajax({
       type: 'POST',
       url: '/projects/dummyName',
       data: JSON.stringify("{'ajax': 'True'}"),
       contentType: 'application/json;charset=UTF-8',
       dataType: 'html',
       success: function(responseData, textStatus, jqXHR) {
           $("#myform").text(responseData);
         },
       error: function (responseData, textStatus, errorThrown) {
           alert('Error: '+errorThrown + ". Status: "+textStatus);
       }
}); 

基本上我添加了数据参数,让服务器方法认为这是一个ajax调用。但我只是无法在服务器上获取数据作为一个口述。千方百计,我无法使它工作。

这是虚拟服务器方法:

@app.route('/projects/<name>', methods=['GET', 'POST'])
def projects(name=None):
    print(request.json)
    print(request.json['ajax'])
    if name:
        project = db.getProject(name)
        form = ProjectForm(project)

        if request.json['ajax'] == True:
            return render_template("myform.html", form=form)
        else:
            return render_template("projectView.html", form=form)
    else:
        return render_template("projects.html")

因此,request.json返回一个字符串:

{'ajax': 'True'}

当然,当尝试访问json['ajax']时,应用程序会中断,我会收到错误的响应消息。我想这会给我一个python dict,因为否则,如果request.json和request.data都是字符串,它们之间的区别是什么。

如何获得一个python dict,其中包含在ajax调用中传递的所有数据?这取决于我定义contentType的方式吗?它是否依赖于JSON.stringify的使用?

非常感谢您的帮助! 谢谢


Tags: 方法nameform服务器jsontruereturnrequest
1条回答
网友
1楼 · 发布于 2024-06-23 03:36:46

由于请求的mimetype,数据正在放入request.json中。我相信你在找^{}

@app.route('/projects/<name>', methods=['GET', 'POST'])
def projects(name=None):
    req_json = request.get_json()
    print(req_json['ajax'])
    if name:
        project = db.getProject(name)
        form = ProjectForm(project)

        if req_json['ajax']:
            return render_template("myform.html", form=form)
        return render_template("projectView.html", form=form)
    return render_template("projects.html")

我目前没有访问我的开发机器的权限,所以我还没有测试过这个,但从我对文档的理解来看,它应该可以工作。

相关问题 更多 >

    热门问题