Ajax浅谈

Ajax的核心技术是JavaScript,XMLHttpRequest,DOM。

XMLHttpRequest,主要的通信代理,实现客户端与服务器端的异步数据交互;

DOM,对已载入页面进行动态更新,实现动态显示和交互;

JavaScript,编写Ajax引擎的脚本语言,同时负责绑定和处理所有数据,起到纽带的作用。

XML,数据交互格式,随着XML的流行,其将成为Ajax不可缺少的一部分。

一、Ajax的优势是:

1.无刷新更新页面,按需取数据,只更新需要更新的部分,不需要刷新整个页面,减少服务器的负担

2.进一步促进页面呈现和数据的分离,特别是使用XML数据表现形式。

二、使用Ajax

XMLHttpRequest对象是实现Ajax应用必不可少的核心技术,负责Ajax与服务器的异步交互,,因此Ajax的应用围绕XMLHttpRequest对象的创建、发送请求、处理响应来展开。

1,  创建XMLHttpRequest对象

Function createXMLHTTP(){

Var request;

Var browser=navigator.appName;//获取用户使用的浏览器名字

//使用IE,则使用MSXML创建XMLHTTP对象。

If(browser==”Microsoft Internet Explorer”){

Var arrVersions=[“MSXML2.XMLHttp.5.0”,”MSXML2.XMLHttp.4.0”,” MSXML2.XMLHttp.3.0”,” MSXML2.XMLHttp”,”Microsoft.XMLHttp”];

for (var i=0;i<arrVersions.length;i++){

try{

//从中找一个支持的版本并穿件XMLHTTP对象

request=new ActiveXobject(arrVersions[i]);

return request;

}

Catch(exception){

//忽略

}

}

}

//如果是Mozilla浏览器

else{

//就返回一个XMLHttpRequest对象

request=new XMLHttpRequest();

return request;

}

}

到此为止我们创建了一个跨IE和Mozilla浏览器的XMLHttpRequest对象。

下面用我们获得的这个XMLHttpRequest对象向服务器发送请求

2、向服务器发送请求

利用上面的创建函数常见XMLHTTP对象实例,向对应的服务器发送请求,可以是GET请求,也可以是POST请求。下面以GET请求为例,向服务器发送请求。代码如下:

Function Send_Request(url){

//创建XMLHTTP对象实例

var http_req=createXMLHTTP();

//Open函数建立连接,一定是异步方式

http_req.open(“GET”,url,true);

//声明回调函数

http_req.onreadystatechange=processRequest;

//发送请求

http_req.send(null);

}

3、处理服务器响应

在上一步声明的回调函数中,接收服务器返回的数据,并根据需求动态的更新页面(一般使用DOM协助完成)或者进行一些其他的操作(如弹出警告等),简单代码如下:

Function processRequest(){

//4表示请求完成

If(http_req.readyState==4){

//200是请求正确

If(http_req.status==200){

//获取服务器的响应文本

Var ResponseStr=http_req.responseText;

//处理返回的数据,这里只是把数据以警告框的方式显示

alert(ResponseStr);

}

else{

alert(“请求页面异常”);

}

}

}

}

二、应用场景

1,数据验证

传统的WEB应用,是将整个表单填写完以后一并发给服务器进行验证,这样验证时间比较长而且给服务器造成不必要负担,同时用户在填入某项时也不能及时获得信息。使用Ajax可以在用户填入表单时候异步将该项表单数据发给服务器进行数据的验证,并立即返回处理结果,不需要刷新整个的页面,只动态的更新某一个页面的某一部分。

具体的代码实现如下:register.jsp如下

<script>

Function createXMLHTTP(){

Var request;

Var browser=navigator.appName;//获取用户使用的浏览器名字

//使用IE,则使用MSXML创建XMLHTTP对象。

If(browser==”Microsoft Internet Explorer”){

Var arrVersions=[“MSXML2.XMLHttp.5.0”,”MSXML2.XMLHttp.4.0”,” MSXML2.XMLHttp.3.0”,” MSXML2.XMLHttp”,”Microsoft.XMLHttp”];

for (var i=0;i<arrVersions.length;i++){

try{

//从中找一个支持的版本并穿件XMLHTTP对象

request=new ActiveXobject(arrVersions[i]);

return request;

}

Catch(exception){

//忽略

}

}

}

//如果是Mozilla浏览器

else{

//就返回一个XMLHttpRequest对象

request=new XMLHttpRequest();

return request;

}

}

//创建XMLHTTP对象实例变量

var http= createXMLHTTP();

//发送请求

function chkUser(){

//请求“CheckUserName” Servlet

Var url=”CheckUserName”;

Var name=document.getElementById(“userName”).value;

url+=(“?userName=”+escape(name)+”&oprate=chkUser”);

http.open(“GET“,url,true);

http. onreadystatechange=processResponse;

//发送请求

http.send(null);

return;

}

//处理服务器的响应

Function processResponse(){

//4表示请求完成

If(http.readyState==4){

//200是请求正确

If(http.status==200){

//获取服务器的响应文本

Var ResponseStr=http.responseText;

if(ResponseStr==”该用户有效,可以使用”){

document.getElementById(“showStr”).innerText=http.responseText;

}

else{

alert(“不可用”);

}

}

}

}

</script>

<body>

<center>

<form action=”/Control?act=Register”>//form表单请求的是Control.java,同时附带了一个参数传给该类act

<input type=”text” name=”userName” onBlur=”chkUser()”>

<div id=”showStr”></div>

<input type=”submit”>

</form>

</body>

目标页面register.jsp请求“CheckUserName”,后者为服务器端Servlet程序(CheckUserName.java),我们简单处理,在其中声明一个字符串列表来保存已经使用过的用户名字,而GET请求响应函数获取请求的用户名参数,判断是否已经存在并把判断结果返回客户端。服务器的CheckUserName.java源代码如下:

Public class CheckUserName extends HttpServlet{

Private String msgStr=””;

Public String[] usernameList;

//响应GET请求函数

Protected void doGet(HttpServletRequest request, HttpServletResponse response){

String oprate=(string)request.getParameter(“oprate”);

String username=(string)request.getParameter(“userName”);

Try{

If(oprate.equals(“chkUser”)){

boolean flag=this.IsContain(username);//看数据库有木有该函数

If(!flag)response.getWriter().writer(“该用户名有效,可以使用!”)

}

}}}

Protected void doPost(HttpServletRequest request, HttpServletResponse response){

doGet(request,response);

}

//Servlet的初始化函数

Public void init(ServletConfig config){

usernameList=new String[]{“Tom”,”jack”};

}

Private Boolean IsContain(String param){

For(int i=0;i<usernameList.length;i++){

If(usernameList[i].equals(param)){

Return true;

}

Else continue;

}

Return false;

}

}

2、级联目录实例

javascript向select添加opction方法三种:

  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. function add(){
  5. var testSelect = document.getElementById("testSelect");
  6. //alert(testSelect.options.length);
  7. //方式1
  8. var op=document.createElement("option");
  9. op.appendChild(document.createTextNode("方式一"));
  10. //方式2
  11. testSelect.appendChild(op);
  12. testSelect.options[testSelect.options.length] = new Option("方式二", "方式二");
  13. //方式3
  14. var op1 = new Option("方式三","方式三",true,true);
  15. testSelect.options.add(op1);
  16. }
  17. </script>
  18. </head>
  19. <body>
  20. <select name="testSelect" id="testSelect">
  21. <option label="test1" value="test1" >123</option>
  22. </select>
  23. <input type="button" value="add" onclick="add()"/>
  24. </body>
  25. </html>
时间: 2024-08-10 02:09:36

Ajax浅谈的相关文章

浅谈JS之AJAX

0x00:什么是Ajax? Ajax是Asynchronous Javascript And Xml 的缩写(异步javascript及xml),Ajax是使用javascript在浏览器后台操作HTTP和web服务器进行数据交换(用户不知道也感觉不出来,就跟桌面应用程序似的进行数据交互),它不会导致页面重新加载,这样才有更好的用户体验. Ajax是基于以下开放标准: javascript(DOM) css html xml(json) 通俗的说就是使用了javascript(DOM)的XMLH

.net中对象序列化技术浅谈

.net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数 据.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象.此外还可以将对象序列化后保存到本地,再次运行的时候可以从本地文件 中“恢复”对象到序列化之前的状态.在.net中有提供了几种序列化的方式:二进制序列化

单页应用SEO浅谈

单页应用SEO浅谈 前言 单页应用(Single Page Application)越来越受web开发者欢迎,单页应用的体验可以模拟原生应用,一次开发,多端兼容.单页应用并不是一个全新发明的技术,而是随着互联网的发展,满足用户体验的一种综合技术. SEO 一直以来,搜索引擎优化(SEO)是开发者容易忽略的部分.SEO是针对搜索(Google.百度.雅虎搜索等)在技术细节上的优化,例如语义.搜索关键词与内容相关性.收录量.搜索排名等.SEO也是同行.市场竞争常用的的营销手段.Google.百度的搜

浅谈移动前端的最佳实践(转)

前言 这几天,第三轮全站优化结束,测试项目在2G首屏载入速度取得了一些优化成绩,对比下来有10s左右的差距: 这次优化工作结束后,已经是第三次大规模折腾公司框架了,这里将一些自己知道的移动端的建议提出来分享下,希望对各位有用 文中有误请您提出,以免误人自误 技术选型 单页or多页 spa(single page application)也就是我们常常说的web应用程序webapp,被认为是业内的发展趋势,主要有两个优点: ① 用户体验好 ② 可以更好的降低服务器压力 但是单页有几个致命的缺点:

浅谈浏览器的兼容性

浏览器的兼容性浅谈 Css兼容性 <span>标签在IE下要放在前面,否则IE会有问题. IE6下没有min-width的概念,起默认的width就是min-width IE6下两个float之间会有3px的bug IE6图片的下方会有空隙 IE6下margin:0 auto不能剧中,解决:为其父容器设置text-align:center A标签的伪类一定要按LV H A的顺序写,否则ie6有错误 Javascript的兼容性 绑定事件不一样.标准的绑定事件为addEventListener,

前端架构浅谈

前端架构浅谈 0.前注 鉴于作者本人的能力有限(非常有限),并且依然在学习中,因此本文的高度和深度必然有所欠缺. 欢迎(并且非常欢迎)大家来批评指正,如果能详细的说明问题在哪里,如何解决和改正,那么就太感谢了!!! 我最喜欢听有理有据的批评了!! 本人QQ:20004604,邮箱:[email protected],期待你的交流. 1.为什么要有一个好的架构 首先明确一点,架构是为需求服务的. 前端架构存在的目的,就我个人理解来说,有以下几点: 1.提高代码的可读性. 一个好的架构,代码的可读性

【开源】浅谈Hybrid技术的设计与实现第二弹

前言 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) PS:据说加个开源在前面阅读量高点,于是就试试咯...... 上文说了很多关于Hybrid的概要设计,可以算得上大而全,有说明有demo有代码,对于想接触Hybrid的朋友来说应该有一定帮助,但是对于进阶的朋友可能就不太满足了,他们会想了解其中的每一个细节,甚至是一些Native的实现,小钗这里继续抛砖引玉,希望接下来的内容对各位有一定帮助. 进入今天的内容之前我们首先谈谈两个相关技术Ionic与React Nativ

浅谈我对 jQuery 的了解

总述 0 获取 jQuery 对象 1 对象跳转 2 方法调用 3 常用API 4 $(…); 5 jQuery 对象获取 6 Data 相关方法 7 选择器 8 基本的过滤器 9 内容过滤选择器 10 可见性过滤器 11 属性过滤器 12 孩子过滤器 13 表单过滤器 14 属性相关的方法 15 类相关的操作 16 html相关的操作 17 文本相关的方法 18 值相关的操作 19 在jQuery 对象之间查找 20 串联方法 21 DOM 文档操作方法 22 CSS 相关方法 23 位置计算

浅谈前端性能优化(移动端)

上一篇讲了PC端的部分:前端性能优化(PC端),这次继续说移动端的.相对于PC端的,移动web浏览器上有一些明显的特点:设备的屏幕小.新特性兼容性较好.支持一些比较新的HTML5和CSS3.需要与Native应用交互等.但移动端可用的CPU资源和网络资源极为有限,因此要做好移动端web上的优化往往需要考虑做更多的事情.首先在移动web的前端页面渲染中,PC的优化规则同样适用,此外针对浏览器也要做一些更细节的优化达到更好的效果.需要注意的是,并不是移动端的优化在PC端不适用,而是由于兼容性的原因,