2017-02-09 86 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', '')