AJAX和jQuery动态加载数据的实现方法


Posted in Javascript onDecember 05, 2016

什么是AJAX?

这里的AJAX不是希腊神话里的英雄,也不是清洁剂品牌,更不是一门语言,而是指异步Javascript和XML(Asynchronous JavaScript And XML),这里的XML(数据格式)也可以是纯文本(Plain Text)或是JSON。简单的说,就是使用XMLHttpRequest对象和服务器端交换数据(以XML或是JSON等格式),使用JavaScript处理数据并更新页面内容。

AJAX和jQuery动态加载数据的实现方法

为什么要使用AJAX?

借助AJAX,我们可以实现:

在不重载页面的情况下,向服务器发送请求;

动态加载数据,即在后台交换数据。

比方说,一个便签本应用,当你在表单里填写好内容,点击新建,这时不会有页面跳转,内容即时更新,数据在后台写入数据库。

AJAX让Web APP更像是APP。

使用jQuery实现AJAX

使用jQuery可以简化这个过程。下面是一个简单的例子,在两个输入框里输入数字,按下计算按钮,JavaScript发送数据,在sever端(视图函数)获取数据,将两个数相加的结果返回,JavaScript获取返回的数据并将其显示在页面上。

1、加载jQuery

把jQuery放到static文件夹,然后加载它:

<script src="{{ url_for('static', filename='jquery.js') }}"></script>

或是从CDN加载(你可能需要更换其他站点提供的CDN资源):

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

2、设置url变量

在jQuery里没法使用url_for函数获取地址,所以我们使用request设置一个动态的全局变量:

<script type=text/javascript>
$SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
</script>

两个输入框,一个按钮:

<h1>Add Two Number</h1>
<p>
<input type="text" size="5" name="a"> +
<input type="text" size="5" name="b"> =
<span id="result">?</span>
</p>
<button id="calculate">Calculate!</button>

3、使用getJSON方法发送和获取数据

<script type=text/javascript>
$(function() {
$('a#calculate').bind('click', function() {
$.getJSON($SCRIPT_ROOT + '/calculate', {
a: $('input[name="a"]').val(),
b: $('input[name="b"]').val()
}, function(data) {
$("#result").text(data.result);
});
return false;
});
});
</script>

$.getJSON(url, data, func)发送一个GET请求,其中url是你要处理数据的视图函数的url,data是返回的数据,func是处理数据的函数。

JSON是JavaScript Object Notation(JavaScript对象表示法)的缩写,一种数据格式,形态上类似Python的字典,以键值对的形式存储数据(符号也是大括号)。

4、获取、处理并返回JSON数据的视图函数

from flask import Flask, jsonify, render_template, request
app = Flask(__name__)
@app.route('/calculate')
def add_numbers():
a = request.args.get('a', 0, type=int) # 第二个参数作为默认值
b = request.args.get('b', 0, type=int)
return jsonify(result=a + b)
@app.route('/')
def index():
return render_template('index.html')

使用Flask提供的jsonify()函数返回JSON数据。

这个例子改编自Flask官方的例子,完整的源码见:https://github.com/pallets/flask/blob/master/examples/jqueryexample

Javascript 相关文章推荐
如何做到打开一个页面,过几分钟自动转到另一页面
Apr 20 Javascript
使用javascript创建快捷方式的简单实例
Aug 09 Javascript
使用jQuery实现验证上传图片的格式与大小
Dec 03 Javascript
Jquery实现由下向上展开效果的例子
Dec 08 Javascript
JavaScript获取页面中第一个锚定文本的方法
Apr 03 Javascript
浅析Javascript ES6中的原生Promise
Aug 25 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
Oct 20 Javascript
javascript表达式和运算符详解
Feb 07 Javascript
webpack教程之webpack.config.js配置文件
Jul 05 Javascript
Vue 源码分析之 Observer实现过程
Mar 29 Javascript
axios简单实现小程序延时loading指示
Jul 30 Javascript
从vue源码解析Vue.set()和this.$set()
Aug 30 Javascript
Javascript中字符串replace方法的第二个参数探究
Dec 05 #Javascript
解析预加载显示图片艺术
Dec 05 #Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
Dec 05 #Javascript
简单几步实现返回顶部效果
Dec 05 #Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
Dec 05 #Javascript
jquery删除数组中重复元素
Dec 05 #Javascript
jQuery动态增减行的实例代码解析(推荐)
Dec 05 #Javascript
You might like
用PHP实现维护文件代码
2007/06/14 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
2017/10/11 PHP
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
详解Python中logging日志模块在多进程环境下的使用
2016/12/26 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
angularjs http与后台交互的实现示例
2018/12/21 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
Python正则抓取网易新闻的方法示例
2017/04/21 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
python config文件的读写操作示例
2019/09/27 Python
Python 读取位于包中的数据文件
2020/08/07 Python
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
会计出纳员的自我评价
2014/01/15 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫