2017-02-09 17 views
0

ユーザーテキストをスクリプトを実行して結果を返すために、Webページからフラスコアプリケーションにユーザーテキストを送信しようとしています。私が抱えている問題は、テキストがサーバー(flask_app.py)側に表示されていないことです。ここでは、テキスト(index.js)を送ることになっているの.jsです:JSON経由でPOSTすることができません

$(document).ready(function(){ 
    console.log('I have loaded'); 

    //Grab DOM elements to use later 
    analyzeTextButton = $("#analyze-button"); 


    analyzeTextButton.click(function() { 
     // get text 
     text = $("#user-text").val(); 
     //console.log(text); //This part works 

     $.ajax({ 
      type: "POST", 
      url: "analyze", 
      dataType: "json", 
      data: { 
       text 
      }, 
      success: function(results, results2, verbs) { 
      text = results.text; 
      console.log("Success!"); 
      console.log(verbs); 
      } 
     })  
    }) 

ここでそれを受け取るしようとしているフラスコのアプリがあります。私はいくつかの異なるバージョン(他のスタックオーバーフローの質問やさまざまなチュートリアルから)を試しましたが、どれも動作しません。それらはcontent1-5とラベル付けされています。

flask_app.py:ここ

@app.route('/analyze', methods=['POST']) 
def analyze(): 
    print('You made it to analyze', file=sys.stderr) #This gets printed 
    content = request.get_json(silent=True) 
    content2 = request.json 
    content3 = request.get_json() 
    content4 = request.form.get('html', '') 
    content5 = request.form['contents'] 
    print(content, file=sys.stderr) #These all return "None" 
    print(content2, file=sys.stderr) #Trying to make them return user text 
    print(content3, file=sys.stderr) 
    print(content4, file=sys.stderr) 
    print(content5, file=sys.stderr) 
    text = "The text is not being found" 
    results = my_script(content) #Run a script on whichever works 
    return jsonify({'results': results}) 

情報(index.htmlを)を送信しようとしているページです。

<div class="row"> 
<form role="form" method='POST' action='#'> 
    <textarea class="form-control" id="user-text" name="contents" placeholder="Enter a comment"></textarea> 
    <button type="button" id="analyze-button" class="btn btn-default">Not Working Button</button> 
    <button type="submit" id="analyze-button2" class="btn btn-default">Working Button</button> 
</form> 

編集:私は見て私のブラウザでは、POSTは正しい文字列を送信しているようです。「here + is + my + text」

答えて

0
data: { 
     text 
} 

が適切なJSONである必要があり、それは

valueが鍵であり、テキストの変数が値である
data: { 
     "value":text 
} 

のようなものでなければなりません。要求は、この行を読み取ることができフラスコアプリで

$.ajax({ 
     type: 'POST', 
     url: "analyze", 
     data: {html:text}, 
     dataType: 'json', 

     success: function (ret) { 
      alert('JSON posted: ' + JSON.stringify(ret)); 
     } 
     }); 

:テキストがHTMLたことを指定するために必要な

+0

と私はまだ同じ結果を得ています。 – jss367

+0

あなたが得ているエラーは何ですか?フラスコのアプリは 'value'キーでJSONデータリクエストを受け付けることができますか? –

+0

POSTリクエストが実際に送信しているものをブラウザでチェックインします。 – Shilly

0

要求あなたが示唆したように、私は「価値」を追加

content4 = request.form.get('html', '') 
関連する問題