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 相关文章推荐
javascript css float属性的特殊写法
Nov 13 Javascript
基于jquery的文章中所有图片width大小批量设置方法
Aug 01 Javascript
判断滚动条到底部的JS代码
Nov 04 Javascript
将json对象转换为字符串的方法
Feb 20 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
Jul 14 Javascript
JavaScript中九种常用排序算法
Sep 02 Javascript
javascript中arguments,callee,caller详解
Mar 16 Javascript
微信小程序开发之入门实例教程篇
Mar 07 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
May 24 Javascript
JavaScript继承与聚合实例详解
Jan 22 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
Jan 12 Javascript
vue+element实现图片上传及裁剪功能
Jun 29 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
浅谈php使用curl模拟多线程发送请求
2019/03/08 PHP
js宝典学习笔记(上)
2007/01/10 Javascript
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
JQuery优缺点分析说明
2010/06/09 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
netbeans7安装python插件的方法图解
2013/12/24 Python
Python实现队列的方法
2015/05/26 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
目前最全的python的就业方向
2018/06/05 Python
python字符串格式化方式解析
2019/10/19 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
2013的个人自我评价
2013/12/26 职场文书
采购助理岗位职责
2014/02/16 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
导游词之杭州西湖
2019/09/19 职场文书