我在 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':'真'}
当然,当尝试访问 json['ajax'] 时应用程序会中断,并且我收到 BAD RESPONSE 错误消息。我认为这会给我一个 python dict,因为如果两者都是字符串,request.json 和 request.data 之间会有什么区别。
我怎样才能得到一个包含在 ajax 调用中传递的所有数据的 python dict?这是否取决于我定义 contentType 的方式?它是否取决于 JSON.stringify 的使用?
帮助将不胜感激!谢谢