Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jsonify没有将数据发送回javascript_Javascript_Ajax_Flask - Fatal编程技术网

jsonify没有将数据发送回javascript

jsonify没有将数据发送回javascript,javascript,ajax,flask,Javascript,Ajax,Flask,我试图使用AJAX进行简单的客户机/服务器通信,但无法从服务器获得响应。我将虚拟数据发送回客户机(用于测试目的),它仍然不起作用 [假设问题] 奇怪的是,通过查看浏览器的控制台,console.log('start')和console.log('end')快速显示真正的,然后消失。同样,对于回答也是如此,我没有时间去看他们。是因为在onclick事件中运行了post 我有一个输入,一旦触发,将运行以下功能: Html <form action="#" method=&q

我试图使用AJAX进行简单的客户机/服务器通信,但无法从服务器获得响应。我将虚拟数据发送回客户机(用于测试目的),它仍然不起作用

[假设问题]

奇怪的是,通过查看浏览器的控制台,
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中有服务器表单。谢谢