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 相关文章推荐
html超链接打开窗口大小的方法
Mar 05 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
Aug 02 Javascript
jquery控制display属性为none或block
Mar 31 Javascript
JS实现跟随鼠标的链接文字提示框效果
Aug 06 Javascript
jQuery实现的文字hover颜色渐变效果实例
Feb 20 Javascript
Vue.js组件tab实现选项卡切换
Mar 23 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 jQuery
jQuery中过滤器的基本用法示例
Oct 11 jQuery
详解 vue better-scroll滚动插件排坑
Feb 08 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
Jul 27 Javascript
wx-charts 微信小程序图表插件的具体使用
Aug 18 Javascript
jquery插件实现代码雨特效
Apr 24 jQuery
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中使用CURL获取页面title例子
2015/01/07 PHP
php对象工厂类完整示例
2018/08/09 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
Python类属性与实例属性用法分析
2015/05/09 Python
python清理子进程机制剖析
2017/11/23 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
优秀社区干部事迹材料
2014/02/03 职场文书
综合内勤岗位职责
2014/04/14 职场文书
自主招生推荐信范文
2014/05/10 职场文书
财务整改报告范文
2014/11/05 职场文书
2015年底工作总结范文
2015/05/15 职场文书
埃及王子观后感
2015/06/16 职场文书
《学会看病》教学反思
2016/02/17 职场文书
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技
virtualenv隔离Python环境的问题解析
2022/06/21 Python