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数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
May 15 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
Jun 18 Javascript
javascript图像处理—仿射变换深度理解
Jan 16 Javascript
js实现点击向下展开的下拉菜单效果代码
Sep 01 Javascript
相册展示PhotoSwipe.js插件实现
Aug 25 Javascript
AngularJS的ng Http Request与response格式转换方法
Nov 07 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
Dec 26 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
Apr 07 Javascript
微信小程序分页加载的实例代码
Jul 11 Javascript
Web安全之XSS攻击与防御小结
Dec 13 Javascript
详解Vue、element-ui、axios实现省市区三级联动
May 07 Javascript
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 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防注入,表单提交值转义的实现详解
2013/06/10 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
php获取指定范围内最接近数的方法
2015/06/02 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
小程序转发探索示例
2019/02/19 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
Python中的urllib模块使用详解
2015/07/07 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
tensorflow 环境变量设置方式
2020/02/06 Python
Uber Eats台湾:寻找附近提供送餐服务的餐厅
2018/05/07 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
.net开发工程师面试题
2014/02/25 面试题
实习鉴定评语
2014/01/19 职场文书
个人简历中自我评价
2014/02/11 职场文书
医师定期考核实施方案
2014/05/07 职场文书
党员干部一句话承诺
2014/05/30 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
2014财务年度工作总结
2014/11/11 职场文书
春节慰问信范文
2015/02/15 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
党支部意见范文
2015/06/02 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
python中使用redis用法详解
2022/12/24 Redis