书签 分享 收藏 举报 版权申诉 / 22

类型11Ajax学习笔记.docx

  • 文档编号:13632322
  • 上传时间:2023-06-15
  • 格式:DOCX
  • 页数:22
  • 大小:182.27KB

step2:

JS代码getNumber函数

functiongetNumber(){

varxhr=getXhr();

xhr.open('get','getNumber.do?

'+Math.random(),true);//若没随机数,则点链接不会变化

xhr.onreadystatechange=function(){

if(xhr.readyState==4){

vartxt=xhr.responseText;

$('d1').innerHTML=txt;}};

xhr.send(null);}

step3:

Servlet中service方法中的if判断

if(action.equals("/getNumber")){

Randomr=newRandom();

intnumber=r.nextInt(10000);

System.out.println(number);

out.println(number);}

1.8案例:

简易注册(使用Ajax进行相关验证,get请求)

step1:

编写myScript.js并放在js文件夹中

此处省略三个函数,详看1.2

functioncheck_username(){//检查用户名,get请求

varxhr=getXhr();//step1获得Ajax对象

//step2使用Ajax对象发送请求

xhr.open('get','check_username.do?

username='+$F('username'),true);

//绑定一个事件处理函数,里面的代码在状态改变时执行,且状态为4时执行if语句

xhr.onreadystatechange=function(){

if(xhr.readyState==4){

if(xhr.status==200){//服务器返回了正确的结果

//只有readyState为4时,Ajax对象才获得服务器返回的所有数据

vartxt=xhr.responseText;

$('username_msg').innerHTML=txt;//利用服务器返回的数据更新页面

}else{//服务器运行出错

$('username_msg').innerHTML='验证出错';}}

};

$('username_msg').innerHTML='正在验证...';//模拟用户量较大的情况,显示正在验证

xhr.send(null);}

functioncheck_number(){//检查验证码

varxhr=getXhr();

xhr.open('get','check_number.do?

number='+$F('number'),true);

xhr.onreadystatechange=function(){

if(xhr.readyState==4){

vartxt=xhr.responseText;

$('number_msg').innerHTML=txt;}};

xhr.send(null);}

step2:

编写regist.jsp页面,get请求

注册

用户名:

onblur="check_username();"/>


真实姓名:


验证码:

onblur="check_number();"/>

'+Math.random();"/>

;"onclick="$('img1').src='checkcode?

'+Math.random();">

看不清换一个


◆注意事项:

href="javascript:

;"相当于href="#",写成href="javascript:

;"一般要和onclick事件一起使用,表示a元素不再指向一个地址,而是点击后触发一个事件。

step3:

ActionServlet中service方法

response.setContentType("text/html;charset=utf-8");

PrintWriterout=response.getWriter();

Stringuri=request.getRequestURI();

Stringaction=uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf("."));

if(action.equals("/check_username")){

Stringusername=request.getParameter("username");

//try{//模拟耗时操作

//Thread.sleep(6000);}catch(InterruptedExceptione){e.printStackTrace();}

if(1==1){//模拟一个系统异常

thrownewServletException("someerror");}

if(username.equals("常")){

out.println("已被占用");}else{out.println("可以使用");}

}elseif(action.equals("/check_number")){

Stringnumber1=request.getParameter("number");

HttpSessionsession=request.getSession();

Stringnumber2=(String)session.getAttribute("number");

if(number1.equalsIgnoreCase(number2)){out.println("验证码正确");

}else{out.println("验证码错误");}

}elseif(action.equals("/regist")){

//加上验证代码,比如检查用户名是否正确,验证码是否正确,此处略

System.out.println("注册成功");}

step4:

CheckcodeServlet借用之前Servlet笔记中13.20案例,随机生成验证码

1.9案例:

修改1.8案例,使用post请求

step1:

修改regist.jsp页面请求方式为post

step2:

添加JS验证代码check_username_post

functioncheck_username_post(){

varxhr=getXhr();

xhr.open('post','check_username.do',true);

//添加一个消息头

xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');

xhr.onreadystatechange=function(){

if(xhr.readyState==4){

vartxt=xhr.responseText;

$('username_msg').innerHTML=txt;}};

xhr.send('username='+$F('username'));}

1.10案例:

使用Ajax实现下拉列表

step1:

ActionServlet中service方法中的if判断

if(action.equals("/select")){

Stringname=request.getParameter("name");

if(name.equals("qq")){out.println("性价比高");

}elseif(name.equals("bmw")){out.println("驾驶性能出众");

}else{out.println("好车,也贵");}}

step2:

select.jsp页面

QQ宝马

法拉利

step3:

JavaScript代码

functionchange(value){

varxhr=getXhr();xhr.open('get','select.do?

name='+value,true);

xhr.onreadystatechange=function(){

if(xhr.readyState==4){vartxt=xhr.responseText;$('d1').innerHTML=txt;}

};

xhr.send(null);}

2、

JSON

2.1什么是JSON

JavaScriptObjectNatation,是一种轻量级的数据交换技术规范(因为借鉴了JavaScript对象创建的一种语法结构,故命名为JSON,详情见JavaScript第8章)。

2.2数据交换

将数据转换成一种中间的,与平台无关的数据格式(比如Xml或者JSON字符串)发送给另外一方来处理。

2.3轻量级

JSON相对于Xml,所需的数据大小要小的多,并且解析的速度更快。

因此Xml现在用的少了(Ajax中的x即指用Xml交换数据)。

2.4JSON语法(www.json.org)

1)如何表示一个对象

{属性名:

属性值,属性名:

属性值……}

◆注意事项:

v属性名要使用引号括起来。

v属性值如果是字符串,要使用引号括起来。

v属性值可以是string、number、boolean、null、object。

例如:

functionf1(){//表示一个对象

varobj={'name':

'chang','age':

22};alert(obj.name);}

functionf2(){//表示一个对象

varobj={'name':

'bo','address':

{'city':

'beijing','room':

'1101'}};

alert(obj.address.room);}

◆注意事项:

JavaScript中创建对象的三种方式(也可看JavaScript笔记中的第8章):

方式一:

使用Json语法来创建

varp={'name':

'zs','age':

22};

方式二:

使用Object来创建

varobj=newObject();obj.name='zs';obj.age=22;

方式三:

利用JavaScript函数来创建(对象模版)

functionPerson(name,age){

this.name=name;this.age=age;}

varperson1=newPerson("zs",22)

2)如何表示一个对象组成的数组,[{},{},{},……]

例如:

functionf3(){//表示一个对象组成的数组

vararr=[{'name':

'chang','age':

22},{'name':

'bo','age':

23}];

alert(arr[1].name);}

2.5如何使用JSON来编写Ajax应用程序

step1:

Java对象转换成JSON字符串(就是普通字符串用了JSON语法而已的字符串)

一般使用JSON官方提供的API(json-lib)来实现转换(6个包:

1主5副)。

也可用谷歌提供的API。

例如:

股票实体类Stock,有name、code、price三个属性和相应的get/se

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
11 Ajax 学习 笔记
提示  冰点文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:11Ajax学习笔记.docx
链接地址:https://www.bingdoc.com/p-13632322.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2


收起
展开