2017-05-25 36 views
1

我正在写一个非常简单的演示Web应用程序,而我似乎无法使用AJAX蟒蛇JS传递一个JSON对象。Python的瓶 - request.json返回无类型的,而不是JSON字典

我已经尝试了一些建议,从人们对这样类似的问题,比如使用.get_json()代替.json,传递对象,而在使用JavaScript JSON.stringify

任何想法,我哪块在这里失踪?

的Javascript

var run_method = function(){ 

    var data1 = {"word":"hello"} 
    console.log("Before " + data1); 
    $.ajax({ 
     url : "/examplemethod", 
     type : "POST", 
     data : data1//JSON.stringify(data1) 
    }) 
    .done(function(data){ 
     var data = JSON.parse(data); 
     console.log(data); 

    }); 
} 

的Python

@app.route("/examplemethod", methods=['POST', 'GET']) 
def example_method(): 
    global data 
    if request.method == 'POST': 
     print request 
     data = request.json 
     print "data", data 
    return "after "+ data["word"] 

我已经试过这每一个变化给出了一个500错误

TypeError: 'NoneType' object has no attribute 'getitem'

显然,这是因为数据应该是dictionary/json,而不是None。但是,如何让它作为字典返回?

+0

你试过我的答案吗? – e4c5

+0

是的,我确实 - 谢谢。但是,它似乎没有解决任何问题。 –

+0

您的回答没有解决我的问题,所以我不接受它。我最终搞清楚了,但没有使用你在这里描述的内容。对不起,我没有时间去挖掘这些代码并进一步细化。 –

回答

3

因为您没有将JSON发送到烧瓶应用程序(请参阅thisthis)。您当前的代码会生成标准的urlencoded表单文章。这在入门又会使得填充在request.form

request.form.get('word') 

切换到一个JSON后按照准则在上面的Q &至于通过request.json访问数据。

相关问题