2013-01-04 12 views
14

POST経由でJSONをFlask Viewに送信したい。ここ JSON「Flask ViewへのPOST」が機能しない

は私のコード

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__' 

ここに。

+0

エラーに基づいて、私はrequest.jsonが正しく記入されていないことを提案します。 'request.body'とヘッダを出力できますか?適切なコンテンツタイプを送信していない可能性があります。 – sberry

+0

'request.body'にはコンテンツがありますか? – sberry

+0

@sberry jupコンテンツがある – cebor

答えて

16

[OK]を私は解決策だ:これは今私の作品

$.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" 
}); 

を!

+1

'contentType'が指定されていることに注意してください。 – Xavi

+0

ちょっとしたショートカットは、 'data'として渡すオブジェクト上で' JSON.stringify'を使うことです。つまり、データパラメータはJSON.stringify({title: 'hallo'、記事: 'test'}) – Matt

関連する問題