2017-02-09 101 views
0

我正在嘗試將用戶文本從網頁發送到我的燒瓶應用,以便在用戶文本上運行腳本,然後返回結果。我遇到的問題是文本沒有出現在服務器(flask_app.py)一側。這裏是應該被髮送文本(index.js)的.js文件:無法通過JSON發佈

$(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看起來正在發送正確的字符串:「這裏+是+我的+文本」

回答

0
data: { 
     text 
} 

應該是正確的JSON,它應該像

data: { 
     "value":text 
} 

其中value是關鍵,文字變量的值。

+0

我補充說:「價值」像你這樣的建議和我仍然得到相同的結果。 – jss367

+0

你得到的錯誤是什麼,你是燒瓶應用程序能夠通過'value'鍵接受JSON數據請求嗎? –

+0

在瀏覽器中檢查POST請求實際發送的內容。 – Shilly

0

指定文本是HTML所需要的要求:

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

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

在燒瓶應用程序的請求可以用下面這行讀取:

content4 = request.form.get('html', '')