Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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
Javascript 烧瓶渲染模板不';我不能在ajaxpost上工作_Javascript_Jquery_Python_Ajax_Flask - Fatal编程技术网

Javascript 烧瓶渲染模板不';我不能在ajaxpost上工作

Javascript 烧瓶渲染模板不';我不能在ajaxpost上工作,javascript,jquery,python,ajax,flask,Javascript,Jquery,Python,Ajax,Flask,我有一个网站,它可以将AJAX帖子发布到Flask路由 我知道有许多类似的问题(请不要标记为重复)使用AJAX成功方法来处理响应。这在我的简化示例中是可行的,但我实际代码中的路径是从数据库中提取一组数据,并将其呈现到多个表中。我不想用JavaScript重写所有的表数据更新,所以我只需要重新呈现模板 python: from flask import Flask, render_template, request app = Flask(__name__) @app.route('/', m

我有一个网站,它可以将AJAX帖子发布到Flask路由

我知道有许多类似的问题(请不要标记为重复)使用AJAX成功方法来处理响应。这在我的简化示例中是可行的,但我实际代码中的路径是从数据库中提取一组数据,并将其呈现到多个表中。我不想用JavaScript重写所有的表数据更新,所以我只需要重新呈现模板

python:

from flask import Flask, render_template, request
app = Flask(__name__)


@app.route('/', methods=['GET', 'POST'])
def hello_world(message=None):
    return render_template('test.html', message=message)


app.run()
html


$(文档).ready(函数(){
$('#mybutton')。单击(函数(){
$.post(window.location.href,{'test':'test'});
});
});
{{message}}
点击我!

通过AJAX发送
POST
请求时,请求来自javascript,来自flask的响应数据将存储在javascript对象中。浏览器本身不会直接发送或接收任何内容,因此不会重新呈现页面


您需要在Flask应用程序中定义另一个端点,以便为POST请求返回json数据,并使用AJAX使用返回的json数据操作DOM。

好的,为什么不从Flask应用程序发送“是或否”标志呢。由于您希望在不刷新页面的情况下显示成功或失败消息,因此在flask应用程序返回结果时让jquery更新DOM。差不多
返回消息
在你的flask应用程序中可能会伴随着
success:function(e)({$('body').append(e);})。由于我手机上的字长限制,无法生成更多代码,但在我手机上调整您的代码可以完成这项工作。干杯

我已经在许多页面上寻找了这个问题的答案,但在找到释放AJAX调用以便允许重播的页面之前,所有页面都没有找到答案:

$('form').on('submit', function(event) {
   $.ajax({
      type: 'POST',
      url:  "{{ url_for( 'myServerFunction' ) }}",
      data: JSON.stringify({'myId':bunchOfIds}),
      contentType: "application/json",
      success:function(response){ document.write(response); }       
   })

最重要的一行是成功行,该行发布文档以便重新提交。

因此基本上没有办法做到这一点?因此,帖子正在提交插入数据库的数据。我想保存插入(成功与否)的结果并显示给用户。我可以使用
posting.done(函数(){window.location.replace(window.location.href);})重新加载模板,但是如果重新加载时会被清除,那么存储成功的东西的方法是什么呢?不确定清除的东西,这个问题对我来说不清楚。关于通过替换
window.location
来重新加载模板,这是否意味着您强制浏览器重新加载页面,从而违背了不重写所有数据的目的?是的,它会重新加载页面。这是理想状态。我希望重新加载页面,因为我已经编写了以这种方式填充表的代码。这是基于python的代码。如果我在AJAX上成功地做到了这一点,我将不得不用Javascript编写所有这些内容。我的意思是,如果你这样做,浏览器将发送另一个请求,你的后端将不得不再次呈现并返回模板,因此这与将发布部分放入没有Javascript的纯html表单没有什么不同。如果您想使用javascript,除了发送/接收最少的数据然后操作DOM之外,我看不到任何更有效的解决方案。我可以保证,使用jquery或任何现代JS框架都可以实现您想要的功能。
$('form').on('submit', function(event) {
   $.ajax({
      type: 'POST',
      url:  "{{ url_for( 'myServerFunction' ) }}",
      data: JSON.stringify({'myId':bunchOfIds}),
      contentType: "application/json",
      success:function(response){ document.write(response); }       
   })