特定场景下Ajax技术的使用
ajax介绍
jax技术包含了几种技术:javascript、xml、css、xstl、dom、xhtml和XMLHttpRequest七种技术,所以ajax就像是粘合剂把七种技术整合到一起,从而发挥各个技术的优势。
ajax的基本原理和优点
为什么ajax会如此流行,必然有它的道理。ajax技术解决了很多其它技术解决不了的问题,比如:
(1)页面无刷新的动态数据交换
(2)局部刷新页面【验证用户名唯一】
(3)界面的美观 【增强用户体验】
(4)对数据库的操作
(5)可以返回简单的文本格式,也可以返回 xml文件格式, json数据格式
不用刷新整个页面便可与服务器通讯的方法:
- flash
- java applet
- 如果使用一组框架构造了一个网页,只需更新其中一个框架,而不需惊动真个页面。
- 隐藏的frame
- XMLHttpRequest:该对象是对javaScript的一个扩展,可是网页与服务器进行通信,是创建Ajax应用的最佳选择,实际上通常把Ajax当作XMLHttpRequest对象的代名词
谁在使用ajax
ajax技术被广泛的使用比如:
1. google mail 【google 邮件】
2 .google map 【google 地图】
3 .google calender 【google 日历】
4. 各大银行网站的股票、基金、黄金实时更新
5. 各大门户网站【新浪/搜狐/网易/淘宝...】数据动态更新
ajax可以解决怎样的问题
- 动态加载数据,按需取得数据。【树形菜单、联动菜单...】
- 改善用户体验。 【输入内容前提示、带进度条文件上传...】
- 电子商务应用。 【购物车、邮件订阅...】
- 访问第三方服务。 【访问搜索服务、rss阅读器】
ajax几个经典案例
ajax经典案例-无刷新验证用户名:
在用户注册时:
1 传统的方法是把用户填写的所有信息都提交到服务器,如果用户名重复,就会出异常。
2 如果使用ajax我们可以只提交用户名,确认用户名是否存在,再让用户点击注册
3 这是我们第一个案例,大家注意ajax开发的几个关键点
ajax经典案例—无刷新验证用户名(get)
创建XMLHttpRequest对象
不同的浏览器创建 XMLHttpRequest 对象的方法是有差异的.我们使用js 的try..catch..
function getXmlHttp() {var xmlHttp; try{ // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest();} catch (e){ // Internet Explorer try{ xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");} catch (e){ try{ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");} catch (e){ alert("您的浏览器不支持AJAX!"); return false;}} }}
ajax 模板代码:
var http_request; function sendHttpRequest(){ if(window.ActiveXObject){ http_request=new ActiveXObject(“Microsoft.XMLHTTP”); } else{http_request=new XMLHttpRequest();} if(http_request){var url=“发送请求给php”; http_request.open(“GET”,url,true); //如果 设为false表示同步,这样可以直接在if使用 http_request.responseText http_request.onreadystatechange=chuli; http_request.send(); } } function chuli(){ if(http_request.readyState==4){ if(http_request.status==200){var res=http_request.responseText; //返回的是文本 根据返回的文本做相应的处理即可} }}
无刷新验证用户名(post):
var http_request; function sendHttpRequest(){ if(window.ActiveXObject){ http_request=new ActiveXObject(“Microsoft.XMLHTTP”); } else{http_request=new XMLHttpRequest();} if(http_request){var url=“发送请求给php”; http_request.open(“GET”,url,true); //如果 设为false表示同步,这样可以直接在if使用 http_request.responseText http_request.onreadystatechange=chuli; http_request.send(); } } function chuli(){ if(http_request.readyState==4){ if(http_request.status==200){var res=http_request.responseText; //返回的是文本 根据返回的文本做相应的处理即可} }}
返回数据格式:
AJAX 可以在php项目,java ee项目,.net项目使用。在服务器端的业务逻辑层使用何种服务器端语言都可以。
从服务器端接收数据的时候,那些数据必须以浏览器能够理解的格式来发送。服务器端的编程语言一般以如下 3 种格式返回数据:
Text(又称Html格式)
XML
JSON
返回Html格式:
TML 由一些普通文本组成。如果服务器通过 XMLHttpRequest 发送 HTML, 文本将存储在 responseText 属性中。不必从 responseText 属性中读取数据。它已经是希望的格式,可以直接将它插入到页面中。
插入 HTML 代码最简单的方法是更新这个元素的 innerHTML 属性。
优点:
从服务器端发送的 HTML 代码在浏览器端不需要用 JavaScript 进行解析。
HTML 的可读性好。
HTML 代码块与 innerHTML 属性搭配,效率高。
缺点:
若需要通过 AJAX 更新一篇文档的多个部分,HTML 不合适
innerHTML 并非 DOM 标准。
返回xml格式:
//这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式
header("Content-Type: text/xml;charset=utf-8");
//告诉浏览器不要缓存数据
header("Cache-Control: no-cache");
提示: 返回xml 格式:
<result><mes>用户存在或是,不存在</mes></result>
优点:
XML 是一种通用的数据格式。
不必把数据强加到已定义好的格式中,而是要为数据自定义合适的标记。
利用 DOM 可以完全掌控文档。
缺点:
如果文档来自于服务器,就必须得保证文档含有正确的首部信息。若文档类型不正确,那么 responseXML 的值将是空的。
当浏览器接收到长的 XML 文件后, DOM 解析可能会很复杂
json格式快速入门案例:
JSON 只是一种文本字符串。它被存储在 responseText 属性中为了读取存储在 responseText 属性中的 JSON 数据,需要根据 JavaScript 的 eval 语句。函数 eval 会把一个字符串当作它的参数。然后这个字符串会被当作 JavaScript 代码来执行。因为 JSON 的字符串就是由 JavaScript 代码构成的,所以它本身是可执行的
代码实例:
提示: 返回json格式:
header("Content-Type: text/html;charset=utf-8");
header("Cache-Control: no-cache");
{“mes”:”用户存在或是不存在”}
优点:
作为一种数据传输格式,JSON 与 XML 很相似,但是它更加灵巧。
JSON 不需要从服务器端发送含有特定内容类型的首部信息。
缺点:
语法过于严谨
代码不易读
eval 函数存在风险
html vs xml vs json 比较:
若应用程序不需要与其他应用程序共享数据的时候, 使用 HTML 片段来返回数据时最简单的
如果数据需要重用, JSON 文件是个不错的选择, 其在性能和文件大小方面有优势
当远程应用程序未知时, XML 文档是首选, 因为 XML 是 web 服务领域的 “世界语”
ajax经典案例—省市联动:
ajax一个最重要的用途就是,动态的从服务器取需要的数据,并在页面无刷新的显示,我们来看一个经典的用法:省市联动菜单:
1 传统的b/s中,显示省市联动菜单是一次性把数据全部取出,并在客户端显示,这样做数据传输量大,不灵活。
2 使用ajax技术,可以根据用户需求从服务器取数据,当用户点击某个按钮时,才从服务器取数据并显示,灵活。
ajax经典案例—天气实时报告:
ajax一个最重要的用途就是,及时的从服务器取需要的数据,并在页面实现局部刷新显示,让用户使用更加方便,我们来看另一个经典的用法,黄金市场报告:
1 传统的b/s中,页面是整体刷新,页面显示有明显延时,影响用户的浏览。
2 使用ajax技术,可以及时的从服务器取出最新的黄金价格,并实现局部刷新,页面显示没有延时和刷新的感觉。
特定场景下Ajax技术的使用的更多相关文章
- 自己总结的C#编码规范--3.特定场景下的命名最佳实践
特定场景下的命名最佳实践 命名空间 要使用PascalCasing,并用点号来分隔名字空间中的各个部分. 如Microsof.Office.PowerPoint 要用公司名作为命名空间的前缀,这样就可 ...
- 特定场景下的PLC 远程控制和数据读取
最近有位博友提出了一种应用场景,根据工作中实际遇到的类似的产品应用场景,记录下自己的解决方案. 场景: 需要在云端控制和采集各个站点的PLC数据.各个站点是分散的,每个站点有公网访问能力,但是分散站点 ...
- 特定场景下SQL的优化
1.大表的数据修改最好分批处理. 1000万行的记录表中删除更新100万行记录,一次只删除或更新5000行数据.每批处理完成后,暂停几秒中,进行同步处理. 2.如何修改大表的表结构. 对表的列的字段类 ...
- 各业务场景下的技术推荐 【.net】
后端: 1.webapi的token加密: 1)JWT验证算法,不推荐:2)RSA 2.集合的扩展:C5.dll 3.对象映射工具:AutoMapper .TinyMapper 4.任务调度框架:Q ...
- 美团在O2O场景下的广告营销
美团作为中国最大的在线本地生活服务平台,覆盖了餐饮.酒店.旅行.休闲娱乐.外卖配送等方方面面生活场景,连接了数亿用户和数百万商户.如何帮助本地商户开展在线营销,使得他们能快速有效地触达目标用户群体提升 ...
- 使用Swoole测试MySQL在特定SQL下的并发性能
场景描述 从全文检索或者缓存中获取ID,根据ID查询数据库获取基础信息,进行页面展示 SQL:select * from table where id in(id1,id2,id3...id40) 此 ...
- Hadoop下各技术应用场景
数据采集和DataFlow 对于数据采集主要分为三类,即结构化数据库采集,日志和文件采集,网页采集.对于结构化数据库,采用Sqoop是合适的,可以实现结构化数据库中数据并行批量入库到hdfs存储.对于 ...
- [hadoop读书笔记] Hadoop下各技术应用场景
1.数据采集 对于数据采集主要分为三类,即结构化数据库采集,日志和文件采集,网页采集. 对于结构化数据库,采用Sqoop是合适的,可以实现结构化数据库中数据并行批量入库到hdfs存储.对于网页采集,前 ...
- ajax技术实现登录判断用户名是否重复以及利用xml实现二级下拉框联动,还有从数据库中获得
今天学了ajax技术,特地在此写下来作为复习. 一.什么是ajax? 客户端(特指PC浏览器)与服务器,可以在[不必刷新整个浏览器]的情况下,与服务器进行异步通讯的技术 即,AJAX是一个[局部刷新 ...
随机推荐
- spring 运行时属性值注入
继续spring学习,今天介绍两种外部属性值注入的方式.当你需要读取配置信息时,可以快速读取. 开始之前先创建属性文件site.properties,放在classpath下面 #数据库配置 ### ...
- 分布式缓存一致性hash算法理解
今天阅读了一下大型网络技术架构这本苏中的分布式缓存一致性hash算法这一节,针对大型分布式系统来说,缓存在该系统中必不可少,分布式集群环境中,会出现添加缓存节点的需求,这样需要保障缓存服务器中对缓存的 ...
- django新手第一课
django是基于python的一个web框架,大致结构如下: 在pycharm,python2.7,django1.8,mysql都装好的情况下,现在开始django的初试: 一.基础启动djang ...
- iOS isa指针
在Objective-C中,任何类的定义都是对象.类和类的实例没有任何本质上的区别.任何对象都有isa指针. isa:是一个Class 类型的指针. 每个实例对象有个isa的指针,它指向对象的类,而C ...
- C语言_来了解一下GCC编译器编译C可执行脚本的过程
GCC简介 Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作品之一.gcc是可以在多种硬体平台上编译出可执行程序的超级编译 ...
- Office 365 共享链接直接进入编辑
首先在Word online共享文档(不多赘述) 但这个链接打开的是预览视图,要点击右上角的"在浏览器中编辑"才能真正编辑. 但是很多情况都是没必要进入这个预览界面再编辑的.这多点 ...
- PAT All Roads Lead to Rome 单源最短路
思路:单源最短路末班就好了,字符串映射成数字处理. AC代码 //#define LOCAL #include <stdio.h> #include <string.h> #i ...
- UVA - 11624 多点bfs [kuangbin带你飞]专题一
题意:某人身陷火场,总有k个点着火,着火点可向四周扩散,问此人能否逃离. 思路:可能有多个着火点,以这些着火点作为起点进行bfs,得到整个火场的最短距离,然后又以人所在坐标作为起点进行bfs,得到该人 ...
- Kaggle新手入门之路
学完了Coursera上Andrew Ng的Machine Learning后,迫不及待地想去参加一场Kaggle的比赛,却发现从理论到实践的转变实在是太困难了,在此记录学习过程. 一:安装Anaco ...
- clearstatcache
clearstatcache clearstatcache — 清除文件状态缓存 void clearstatcache ([ bool $clear_realpath_cache = false [ ...