2016-09-20 88 views
2

我正在使用react将提交表单提交给烧瓶后端。数据以json的形式提交,这是一个例子。烧瓶JSON发布请求不起作用

add_new_user(e){ 
    e.preventDefault() 
    var user_details = {} 
    user_details['fname'] = this.state.first_name 
    user_details['last_name'] = this.state.last_name 

var post_request = new Request('http://127.0.0.1:5000/add_new_user', { 
    method: 'post', 
    body: JSON.stringify(user_details) 
}) 

fetch(post_request).then(function(response){ 
    console.log(response) 
}) 

在我的后端的代码看起来是这样的,

@app.route('/add_new_user', methods=['POST']) 
def add_user(): 
    content = request.json() 
    print content 
    return 'user added' 

然而含量变量为空,因此屏幕上的打印的数据是无。我怎样才能解决这个问题?我究竟做错了什么。谢谢

回答

0

您可能需要将请求的请求内容类型设置为application/json。否则,它将是None

+0

增加'''content-type:application/json''',但它似乎不工作,为什么? – rksh

0

尝试request.get_json(force=True)。建议使用get_json()而不是json()方法。 force=True允许忽略内容类型要求。

+0

感谢'''force = True''似乎可行,但是当我在没有force = True的情况下添加'''content-type:application/json'''时,它仍然不起作用。这是为什么? – rksh

+0

@rksh确保您在React客户端中正确设置了内容需求类型。可能是一些缓存问题。也可以尝试使用例如卷曲并看到结果。 'curl -H“Content-Type:application/json”-X POST -d'{“fname”:“some first name”,“last_name”:“some last name”}'http://127.0.0.1:5000/add_new_user' – Nurjan

+0

嗨,对不起,我正确地设置了内容类型,但是我必须安装flask-cors扩展来启用cors才能正常工作。谢谢 – rksh