我在使用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调用。但是我就是无法将该数据作为dict在服务器端获取。我已经尝试了很多方法,但无法使其工作。
这是虚拟的服务器方法:
@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']时,应用程序崩溃,我收到了一个BAD RESPONSE错误消息。我以为它会给我一个python字典,否则request.json和request.data之间有什么区别,如果两者都是字符串。
如何使用所有通过ajax调用传递的数据获取python字典?这取决于我如何定义contentType吗?这取决于是否使用JSON.stringify吗?
非常感谢您的帮助! 谢谢