jsonify没有将数据发送回javascript
我试图使用AJAX进行简单的客户机/服务器通信,但无法从服务器获得响应。我将虚拟数据发送回客户机(用于测试目的),它仍然不起作用 [假设问题] 奇怪的是,通过查看浏览器的控制台,jsonify没有将数据发送回javascript,javascript,ajax,flask,Javascript,Ajax,Flask,我试图使用AJAX进行简单的客户机/服务器通信,但无法从服务器获得响应。我将虚拟数据发送回客户机(用于测试目的),它仍然不起作用 [假设问题] 奇怪的是,通过查看浏览器的控制台,console.log('start')和console.log('end')快速显示真正的,然后消失。同样,对于回答也是如此,我没有时间去看他们。是因为在onclick事件中运行了post 我有一个输入,一旦触发,将运行以下功能: Html <form action="#" method=&q
console.log('start')
和console.log('end')
快速显示真正的,然后消失。同样,对于回答也是如此,我没有时间去看他们。是因为在onclick
事件中运行了post
我有一个输入,一旦触发,将运行以下功能:
Html
<form action="#" method="POST">
<textarea name="text" class="text-editor", spellcheck="false", autocomplete="off", autofocus>##Type sth</textarea>
<input type="submit" id="clickme">
</form>
服务器端
document.getElementById("clickme").onclick = showdownText;
function showdownText(){
console.log('start')
$.post('/_get_payload', {
text: textEditor.value
}).done(function(data){
console.log('success')
}).fail(function(){
console.log('fail')
});
console.log('end')
}
@app.route('/_get_payload', methods=['POST'])
def get_payload():
data = request.form['text']
post = Post(text=data)
db.session.add(post)
db.session.commit()
print(post)
return jsonify({
"username": "admin",
"email": "admin@localhost",
"id": 42
})
问题:为什么即使我发送虚拟数据,我也无法从服务器上取回有效负载?当您在
元素中单击带有type=“submit”
的提交按钮(
或
)时,浏览器将向服务器发送POST请求,页面将被重新加载,这就是console.log
的内容将消失的原因
在您的情况下,由于使用AJAX发送POST请求,因此不需要创建
或
元素,只需使用
<textarea name="text" class="text-editor" spellcheck="false" autocomplete="off" autofocus>##Type sth</textarea>
<button id="clickme">Submit</button>
键入某物
提交
另外,不需要在HTML属性之间添加逗号。我假设表单提交正在重新加载页面。“奇怪的是,通过查看浏览器的控制台,console.log('start')和console.log('end')显示得非常快,然后消失。”`尝试更改您的
@Taplar它工作了,谢谢!另一种方法是在我的表单上有一个事件监听器,并监听onsubmit
事件。它更灵活,以防我的HTML中有服务器表单。谢谢