JSON“POST”到烧瓶视图不起作用
Posted
技术标签:
【中文标题】JSON“POST”到烧瓶视图不起作用【英文标题】:JSON "POST" to Flask View doesn't work 【发布时间】:2012-12-19 05:26:35 【问题描述】:我想通过 POST 将一些 JSON 发送到我的 Flask 视图。
这是我的代码
js:
$.post('/blog/add/ajax',
"title": "hallo", "article": "test" ,
function(data)
console.log(data.title);
console.log(data.article);
,
"json"
);
py:
@app.route('/blog/add/ajax', methods=['POST', 'GET'])
def add_blog_ajax():
if request.method == 'POST':
title = request.json['title']
article = request.json['article']
blog = Blog(title, article)
db.session.add(blog)
db.session.commit()
return jsonify(title=title, article=article)
错误:
TypeError: 'NoneType' object has no attribute '__getitem__'
我不知道该怎么做,这里出了什么问题。
【问题讨论】:
基于错误,我建议 request.json 没有正确填写。你能输出request.body
和标题吗?也许您没有发送适当的内容类型。
request.body
有内容吗?
@sberry jup 有内容
表示content-type没有触发json的更新。
【参考方案1】:
好的,我有一个解决方案:
$.ajax(
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/blog/add/ajax",
data: JSON.stringify(title: 'hallo', article: 'test'),
success: function (data)
console.log(data.title);
console.log(data.article);
,
dataType: "json"
);
这对我有用!
【讨论】:
请注意contentType
已指定。
一个简单的捷径是在你想作为data
传递的对象上使用JSON.stringify
。所以你的数据参数将等于JSON.stringify(title: 'hallo', article: 'test')
以上是关于JSON“POST”到烧瓶视图不起作用的主要内容,如果未能解决你的问题,请参考以下文章