当前位置:   article > 正文

第二章 Flask与HTTP (4)_flask http双端通信

flask http双端通信

AJAX技术

1.认识AJAX

AJAX指异步Javascript和XML(Asynchronous JavaScript And XML),它不是编程语言或通信协议,而是一系列技术的组合体。简单来说,AJAX基于 XMLHttpRequest( https://xhr.spec.whatwg.org/ )让我们可以在不重载页面 的情况下和服务器进行数据交换。加上JavaScript和DOM(Document Object Model,文档对象模型),我们就可以在接收到响应数据后局部更新页面。而XML指 的则是数据的交互格式,也可以是纯文本(Plain Text)、HTML或JSON。
 
在Web程序中,很多加载数据的操作都可以在客户端使用AJAX实现。比如,当用户鼠标向下滚动到底部时在后台发送请求获取数据,然后插入文章;再比如,用 户提交表单创建新的待办事项时,在后台将数据发送到服务器端,保存后将新的条 目直接插入到页面上。
 
以删除某个资源为例,使用AJAX技术时的流程如下:
1)当单击“删除”按钮时,客户端在后台发送一个异步请求,页面不变,在接
收响应前可以进行其他操作。
2)服务器端接收请求后执行删除操作,返回提示消息或是无内容的204响应。
3)客户端接收到响应,使用JavaScript更新页面,移除资源对应的页面元
素。
 
2.使用jQuery发送AJAX请求
jQuery是流行的JavaScript库,它包装了JavaScript,让我们通过更简单的方式编写JavaScript代码。对于AJAX,它提供了多个相关的方法,使用它可以很方 便地实现AJAX操作。更重要的是,jQuery处理了不同浏览器的AJAX兼容问题,我们 只需要编写一套代码,就可以在所有主流的浏览器正常运行。
 
异步加载长文章示例
 
  1. from jinja2.utils import generate_lorem_ipsum
  2. @app.route('/post')
  3. def show_post():
  4. post_body = generate_lorem_ipsum(n=2) # 生成两段随机文本
  5. return '''
  6. <h1>A very long post</h1>
  7. <div class="body">%s</div>
  8. <button id="load">Load More</button>
  9. <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  10. <script type="text/javascript">
  11. $(function() {
  12. $('#load').click(function() {
  13. $.ajax({
  14. url: '/more', // 目标URL
  15. type: 'get', // 请求方法
  16. success: function(data){ // 返回2XX响应后触发的回调函数
  17. $('.body').append(data); // 将返回的响应插入到页面中
  18. }
  19. })
  20. })
  21. })
  22. </script>''' % post_body
  23. @app.route("/more")
  24. def load_post():
  25. return generate_lorem_ipsum(n=1)
在第二个script标签中,我们在代码的最外层创建了一个$(function(){...})函数,这个函数是常见的$(document).ready(function(){...}) 函数的简写形式。这个函数用来在页面DOM加载完毕后执行代码,类似传统
JavaScript中的window.onload方法,所以我们通常会将代码包装在这个函数中。美元符号是jQuery的简写,我们通过它来调用jQuery提供的多个方法,所以 $.ajax()等同于jQuery.ajax()。
 
在$(function(){...})中,$('#load')被称为选择器,我们在括号中 传入目标元素的id、class或是其他属性来定位到对应的元素,将其创建为jQuery
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/70332
推荐阅读
相关标签
  

闽ICP备14008679号