无法通过JSON发布
问题描述:
我正在尝试将用户文本从网页发送到我的烧瓶应用,以便在用户文本上运行脚本,然后返回结果。我遇到的问题是文本没有出现在服务器(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看起来正在发送正确的字符串:“这里+是+我的+文本”
答
data: {
text
}
应该是正确的JSON,它应该像
data: {
"value":text
}
其中value
是关键,文字变量的值。
答
指定文本是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', '')
我补充说:“价值”像你这样的建议和我仍然得到相同的结果。 – jss367
你得到的错误是什么,你是烧瓶应用程序能够通过'value'键接受JSON数据请求吗? –
在浏览器中检查POST请求实际发送的内容。 – Shilly