ajax
来源:互联网 发布:在淘宝卖手机 编辑:程序博客网 时间:2024/06/14 00:27
对于复杂数据尽量用json代替xml
1.什么是ajax (Asynchronous JavaScript and Xml)?
(页面中编写代码 .html)
ajax是一种用来改善用户体验的技术 实质是 使用浏览器提供的(ajax对象 XMLHttpRequest)对象异步的向服务器发送请求
(注:异步请求,指的是当ajax对象在向服务器发送请求时 浏览器并不会销毁当前页面 用户仍然可以对当前页面做其他事情)
当服务器响应并返回部分数据(而不是一个完整的数据)时 Ajax会以页面无刷新的效果更改页面中的局部内容
2.能做什么?
典型应用(级联菜单下拉列表)
用于校验输入的值(如用户名)
改善用户体验 当ajax向服务器发送注册请求的时候浏览器的页面不会被销毁 而是依然存在
不刷新页面的情况下处理更新服务器响应过来的部分数据
优点是:(用户不用等待 可以干其他的事情)
3.在全局中那个位置?
位于浏览器中 代替浏览器向服务器发送信息
4.包括哪些?
1 .js文件
2.java类
3.html页面
web.xml配置servlet属性
三者相互连接
5.属性方法有:
异步对象的属性和方法
abort():取消请求
getAllResponseHeaders()获取相应的所有Http头
getResponseHeader():获取指定的Http头
open(method,url):创建请求
send():发送求情
重要属性:
1.onreadystatechange:绑定时间处理函数(用来处理onreadystatechange事件)
注:当onreadystatechange属性值发生了改变(从0变成1) 就产生了onreadystatechange事件
2.readystate:有5个值(0,1,2,3,4,)用来获得Ajax对象与服务器
通信的进展(当值是4的时候 表示Ajax对象已经获得了服务器返回的所有的数据)
3.responseText 获得服务器返回的文本数据
4.responseXML 获得服务器返回的xml数据
5.status 获得状态码
方法:
ajax发送异步请求的步骤:
1.获取Ajax对象:获取XMLHttpRequest对象实例
var xhr=getAjx()
2.调用ajax对象发送求情
1>发送get请求
1》xhr.open(请求类型,请求地址,同步/异步)
比如:xhr.open('get','check.do?uname=Sally',true)
2》xhr.onreadystatechange=事件处理函数
比如:xhr.onreadystatechange=f1
3>xhr=send(null);
注:true表示异步操作
同步:当ajax对象发送请求时 浏览器会锁定当前页面(用户对当前不 能做任何操作)
2>发送post请求
与get的区别 其他都一样
1》xhr.open('post','check.do',true);
2》xhr.setRequestHeader('content-type','application/x-www- form-urlencoded');
3》xhr.onreadystatechange=f1;
4》 xhr.send('uname=salary');
注:(了解)
按照http协议要求,如果发送的是post请求,请求数据包
应该包含一个消息头('content-type')。但是,ajax对象
默认发送的数据包是不带这个消息头的,所以,需要调用
setRequestHeader方法。
3.编写服务器程序
写个servlet方法 重写service
1.//获得请求资源路径
String uri=request.getRequestURI();
2.String action=uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf("."));
3.response.setContentType("text/html;charset=utf-8 ");
4.PrintWriter out=response.getWriter();
5.out.println();
4.编写处理函数
if(xhr==4&&xhr.status==200){
//获得服务器返回页面
var txt=xhr.responseText;
//更新页面
}
6.如何获得?
function getXHr(){
var xhr=null;
if(window.XMLHttpRequest){
非ie浏览器
xhr=new XMLHttpRequest();
}else{
ie浏览器
xhr=new ActiveObject('Microsoft.XMLHttp')
}
return xhr;
}
缓存问题
什么是缓存问题?
1)什么是缓存问题?
ie浏览器提供的ajax对象在发送get请求时,会比较请求地址是否
访问过,如果该地址之前访问过,则不再发送新的请求,而是显示
第一次访问的结果。
2)如何解决?
在请求地址后面加一个随机数
比如:getnumber.do?+Math.random(),true;
乱码问题?
get
1.服务器中统一用utf-8
2.在客户端使用encodeURI函数对中文编码
post
获取请求前添加request.setCharacterEncoding("utf-8");
json
(javaScript object notation)
是一种轻量级的交换格式
易于读取和编写 同时也易于解析和生成
json是一种完全独立于语言之外
轻量级:相对于xml文档 要小 解析速度快
语法:
表示一个对象{属性名:属性值,属性名:属性值...}
属性值可以是:number string true/false null object
string时必须用双引号括起来
还可以是一个数组
[
{"name":"Sally","city":"北京","age":25}
{"name":"lili","city":"南京","age":28}
]
对象
{
"name":"jerry",
"hobby":["sing","dance","eat"]
}
<emp> //xml文件
<name>Sally</name>
<city>北京</city>
<age>25</age>
</emp>
代替
//json文件
{"name":"Sally","city":"北京","age":25}
两种结构:
1.名称/值对的集合
2.值得有序列表
数据交换
1.将java对象或者java对象组成的数组/集合转换为json字符串 使用jackson提供的api来转换 还有别的api www.json.org
Stock s=new Stock();
s.setCode("600877");
ObjectMapper om=new ObjectMapper();
String str=om.writeValueAsString(om);
2.json字符串转换为javascript对象
使用javscript内置对象json提供的parsejon来转换
还有别的选择 json官方的api 还有一些框架(jquery) 也提供了相应的方法来转换
var str='{"name":"楚乔","age":22}';
//使用js内置的对象JSON来转换
var obj=JSON.parse(str);
alert(obj);
1.什么是ajax (Asynchronous JavaScript and Xml)?
(页面中编写代码 .html)
ajax是一种用来改善用户体验的技术 实质是 使用浏览器提供的(ajax对象 XMLHttpRequest)对象异步的向服务器发送请求
(注:异步请求,指的是当ajax对象在向服务器发送请求时 浏览器并不会销毁当前页面 用户仍然可以对当前页面做其他事情)
当服务器响应并返回部分数据(而不是一个完整的数据)时 Ajax会以页面无刷新的效果更改页面中的局部内容
2.能做什么?
典型应用(级联菜单下拉列表)
用于校验输入的值(如用户名)
改善用户体验 当ajax向服务器发送注册请求的时候浏览器的页面不会被销毁 而是依然存在
不刷新页面的情况下处理更新服务器响应过来的部分数据
优点是:(用户不用等待 可以干其他的事情)
3.在全局中那个位置?
位于浏览器中 代替浏览器向服务器发送信息
4.包括哪些?
1 .js文件
2.java类
3.html页面
web.xml配置servlet属性
三者相互连接
5.属性方法有:
异步对象的属性和方法
abort():取消请求
getAllResponseHeaders()获取相应的所有Http头
getResponseHeader():获取指定的Http头
open(method,url):创建请求
send():发送求情
重要属性:
1.onreadystatechange:绑定时间处理函数(用来处理onreadystatechange事件)
注:当onreadystatechange属性值发生了改变(从0变成1) 就产生了onreadystatechange事件
2.readystate:有5个值(0,1,2,3,4,)用来获得Ajax对象与服务器
通信的进展(当值是4的时候 表示Ajax对象已经获得了服务器返回的所有的数据)
3.responseText 获得服务器返回的文本数据
4.responseXML 获得服务器返回的xml数据
5.status 获得状态码
方法:
ajax发送异步请求的步骤:
1.获取Ajax对象:获取XMLHttpRequest对象实例
var xhr=getAjx()
2.调用ajax对象发送求情
1>发送get请求
1》xhr.open(请求类型,请求地址,同步/异步)
比如:xhr.open('get','check.do?uname=Sally',true)
2》xhr.onreadystatechange=事件处理函数
比如:xhr.onreadystatechange=f1
3>xhr=send(null);
注:true表示异步操作
同步:当ajax对象发送请求时 浏览器会锁定当前页面(用户对当前不 能做任何操作)
2>发送post请求
与get的区别 其他都一样
1》xhr.open('post','check.do',true);
2》xhr.setRequestHeader('content-type','application/x-www- form-urlencoded');
3》xhr.onreadystatechange=f1;
4》 xhr.send('uname=salary');
注:(了解)
按照http协议要求,如果发送的是post请求,请求数据包
应该包含一个消息头('content-type')。但是,ajax对象
默认发送的数据包是不带这个消息头的,所以,需要调用
setRequestHeader方法。
3.编写服务器程序
写个servlet方法 重写service
1.//获得请求资源路径
String uri=request.getRequestURI();
2.String action=uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf("."));
3.response.setContentType("text/html;charset=utf-8 ");
4.PrintWriter out=response.getWriter();
5.out.println();
4.编写处理函数
if(xhr==4&&xhr.status==200){
//获得服务器返回页面
var txt=xhr.responseText;
//更新页面
}
6.如何获得?
function getXHr(){
var xhr=null;
if(window.XMLHttpRequest){
非ie浏览器
xhr=new XMLHttpRequest();
}else{
ie浏览器
xhr=new ActiveObject('Microsoft.XMLHttp')
}
return xhr;
}
缓存问题
什么是缓存问题?
1)什么是缓存问题?
ie浏览器提供的ajax对象在发送get请求时,会比较请求地址是否
访问过,如果该地址之前访问过,则不再发送新的请求,而是显示
第一次访问的结果。
2)如何解决?
在请求地址后面加一个随机数
比如:getnumber.do?+Math.random(),true;
乱码问题?
get
1.服务器中统一用utf-8
2.在客户端使用encodeURI函数对中文编码
post
获取请求前添加request.setCharacterEncoding("utf-8");
json
(javaScript object notation)
是一种轻量级的交换格式
易于读取和编写 同时也易于解析和生成
json是一种完全独立于语言之外
轻量级:相对于xml文档 要小 解析速度快
语法:
表示一个对象{属性名:属性值,属性名:属性值...}
属性值可以是:number string true/false null object
string时必须用双引号括起来
还可以是一个数组
[
{"name":"Sally","city":"北京","age":25}
{"name":"lili","city":"南京","age":28}
]
对象
{
"name":"jerry",
"hobby":["sing","dance","eat"]
}
<emp> //xml文件
<name>Sally</name>
<city>北京</city>
<age>25</age>
</emp>
代替
//json文件
{"name":"Sally","city":"北京","age":25}
两种结构:
1.名称/值对的集合
2.值得有序列表
数据交换
1.将java对象或者java对象组成的数组/集合转换为json字符串 使用jackson提供的api来转换 还有别的api www.json.org
Stock s=new Stock();
s.setCode("600877");
ObjectMapper om=new ObjectMapper();
String str=om.writeValueAsString(om);
2.json字符串转换为javascript对象
使用javscript内置对象json提供的parsejon来转换
还有别的选择 json官方的api 还有一些框架(jquery) 也提供了相应的方法来转换
var str='{"name":"楚乔","age":22}';
//使用js内置的对象JSON来转换
var obj=JSON.parse(str);
alert(obj);
阅读全文
0 0
- Ajax
- Ajax
- AJAX
- AJAX
- AJAX
- AJAX
- AJAX
- ajax
- ajax
- Ajax
- ajax
- ajax
- AJAX
- Ajax
- Ajax
- Ajax
- ajax
- ajax
- Modbus通讯协议
- 《运营之光》-- 学习笔记(三)
- Java中String直接赋字符串和new String的区别
- 2.1嵌入式微处理器的结构和类型
- 正则表达式学习小结
- ajax
- Junit4使用教程
- [数据结构] 基本概念 PrintN函数实现
- 1.1 嵌入式系统的定义和组成
- Codeforces Round #435 A. Mahmoud and Ehab and the MEX
- 邮件系统搭建---邮件服务器Apache James Server 安装、将数据库改变为MySql
- 转载转载 非对称加密算法RSA http://snowolf.iteye.com/blog/379860
- YOLOv2—更改CelebA数据集的bbox [by zhangzexuan][17.9.24updated]
- ListView基本使用