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 相关文章推荐
js的toLowerCase方法用法实例
Jan 27 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
Jun 23 Javascript
修改ligerui 默认确认按钮的方法
Dec 27 Javascript
BootStrap实现带关闭按钮功能
Feb 15 Javascript
vue2.0实现导航菜单切换效果
May 08 Javascript
vue结合axios与后端进行ajax交互的方法
Jul 06 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 Javascript
webpack的CSS加载器的使用
Sep 11 Javascript
解决vue 表格table列求和的问题
Nov 06 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
Apr 09 Javascript
three.js 如何制作魔方
Jul 31 Javascript
javascript操作向表格中动态加载数据
Aug 27 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中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
微信支付开发告警通知实例
2016/07/12 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
javascript动画浅析
2012/08/30 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
员工培训心得体会
2013/12/30 职场文书
高中运动会入场词
2014/02/14 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
给老师的感谢信
2015/01/20 职场文书
公司经营目标责任书
2015/01/29 职场文书
拖欠货款起诉状
2015/05/20 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript