本文作者:浮水,一九八网络 科技 V客学院资深前端工程师
Ajax目前运用领域是比较广泛的,比如pc WEB 、移动 wap/web APP等API接口调用。
关于AJAX,用JS原生写法:
首先得手动出创建XMLHttpRequest,来处理AJAX请求,定义方式如下
//chrome firefox safari
xmlHttp=new XMLHttpRequest();
//针对低版本IE浏览器 (比如:IE6/IE5)
xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);
实例化以后就可以调用地址发送请求了,代码如下
xmlHttp.open("POST",url); //url 服务器API接口的地址,“post”以POST方式发送请求
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(data); //开始发送请求
xmlHttp.onreadystatechange = function() { //发送请求成功后相应函数
if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) {
alert('success');
} else {
alert('fail');
}
}
所以,上面只是创建了底层处理AJAX的XMLHttpRequest对象,如何发送请求,如何处理返回结果。做一个在普通不过的程序员JS的AJAX请求原来我们是需要掌握的,那芙蓉姐姐哪儿是如何完整处理这种异步请求呢?哈哈,当然是万能的jQuery。
关于ajax 异步处理,jquery 提够很多封装好的方法,一下为常用的的几个方法:
$.ajax //ajax方法中有一个type参数,值是get和post二选一
$.get //使用 HTTP GET 请求从服务器加载数据
$.post //使用 HTTP POST 请求从服务器加载数据
$.load //从服务器加载数据,返回给HTML页面
示例场景:
假设页面上有一个id为submit的按钮,当用户点击的时候向服务发送HTTP POST请求,请求中传递的数据是user=”testName”,password=”123456″。然后用alert对象提示服务器响应是否成功。先用$.ajax方法实现:
$(“#hello”).click(function(){
$.ajax({
type:”post”, //post请求
url:”test.aspx”, //服务器端响应的页面
data:{‘user:’testName’,’password':’123456′}, //向服务器传递的数据
dataType:”json”, //服务器响应的数据格式,可以text、json、xml/html、javascript
success: function(data) {
alert(“服务器响应成功!”); //服务器返回的数据包含在data中
},
error:function(){
alert(“服务器响应失败!”);
}
});
});
以上是非跨域出来的,如果需要跨域则需要用 jsonp协议,也就是dataType :’jsonp’,然后后天配合返回jsonp数据格式就OK了!
Jquery 的 $.get $.post $.load 相对来说就更简单了 ,只需设置 url 地址,参数 data, 及回调函数 success就可以了,写法如下:
$.get(url,{user:”testName”,password:’123456’,’json’,function(){
alert(“服务器响应成功!”); //服务器响应成功
})
执行过程如下:
a) 将$.ajax()函数的cache和ifModified参数同时设置为true。
b) 客户端请求服务端A,在服务端加上Last-Modified/ETag响应体一起返回。
c) 客户端缓存接收到的Last-Modified/ETag响应体,并在下一次发生请求A时将缓存的Last-Modified/ETag值做为If-Modified-Since/IF-None-Match请求头一起发给服务器。
d) 服务器接收If-Modified-Since/IF-None-Match后,就根据参数值检验自上次客服端请求之后资源是否有改动
1. 若还未改动则直接返回响应304和一个空的响应体。
2. 若已改动则重新处理数据,返回最新的请求数据。
e) 这样,既保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。
这一过程中,我们只需要做:服务器返回Last-Modified/ETag响应头和在服务端检验数据是否失效并采取对应处理方式。其余步骤由jQuery框架的ajax()函数完成。
(备注:本文由一九八网络科技V客学院前端工程师浮水原创,转发请列明出处!)
Ajax目前运用领域是比较广泛的,比如pc WEB 、移动 wap/web APP等API接口调用。
关于AJAX,用JS原生写法:
首先得手动出创建XMLHttpRequest,来处理AJAX请求,定义方式如下
//chrome firefox safari
xmlHttp=new XMLHttpRequest();
//针对低版本IE浏览器 (比如:IE6/IE5)
xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);
实例化以后就可以调用地址发送请求了,代码如下
xmlHttp.open("POST",url); //url 服务器API接口的地址,“post”以POST方式发送请求
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(data); //开始发送请求
xmlHttp.onreadystatechange = function() { //发送请求成功后相应函数
if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) {
alert('success');
} else {
alert('fail');
}
}
所以,上面只是创建了底层处理AJAX的XMLHttpRequest对象,如何发送请求,如何处理返回结果。做一个在普通不过的程序员JS的AJAX请求原来我们是需要掌握的,那芙蓉姐姐哪儿是如何完整处理这种异步请求呢?哈哈,当然是万能的jQuery。
关于ajax 异步处理,jquery 提够很多封装好的方法,一下为常用的的几个方法:
$.ajax //ajax方法中有一个type参数,值是get和post二选一
$.get //使用 HTTP GET 请求从服务器加载数据
$.post //使用 HTTP POST 请求从服务器加载数据
$.load //从服务器加载数据,返回给HTML页面
示例场景:
假设页面上有一个id为submit的按钮,当用户点击的时候向服务发送HTTP POST请求,请求中传递的数据是user=”testName”,password=”123456″。然后用alert对象提示服务器响应是否成功。先用$.ajax方法实现:
$(“#hello”).click(function(){
$.ajax({
type:”post”, //post请求
url:”test.aspx”, //服务器端响应的页面
data:{‘user:’testName’,’password':’123456′}, //向服务器传递的数据
dataType:”json”, //服务器响应的数据格式,可以text、json、xml/html、javascript
success: function(data) {
alert(“服务器响应成功!”); //服务器返回的数据包含在data中
},
error:function(){
alert(“服务器响应失败!”);
}
});
});
以上是非跨域出来的,如果需要跨域则需要用 jsonp协议,也就是dataType :’jsonp’,然后后天配合返回jsonp数据格式就OK了!
Jquery 的 $.get $.post $.load 相对来说就更简单了 ,只需设置 url 地址,参数 data, 及回调函数 success就可以了,写法如下:
$.get(url,{user:”testName”,password:’123456’,’json’,function(){
alert(“服务器响应成功!”); //服务器响应成功
})
执行过程如下:
a) 将$.ajax()函数的cache和ifModified参数同时设置为true。
b) 客户端请求服务端A,在服务端加上Last-Modified/ETag响应体一起返回。
c) 客户端缓存接收到的Last-Modified/ETag响应体,并在下一次发生请求A时将缓存的Last-Modified/ETag值做为If-Modified-Since/IF-None-Match请求头一起发给服务器。
d) 服务器接收If-Modified-Since/IF-None-Match后,就根据参数值检验自上次客服端请求之后资源是否有改动
1. 若还未改动则直接返回响应304和一个空的响应体。
2. 若已改动则重新处理数据,返回最新的请求数据。
e) 这样,既保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。
这一过程中,我们只需要做:服务器返回Last-Modified/ETag响应头和在服务端检验数据是否失效并采取对应处理方式。其余步骤由jQuery框架的ajax()函数完成。
(备注:本文由一九八网络科技V客学院前端工程师浮水原创,转发请列明出处!)









