Ajax请求GET/POST方法的封装
2016-11-29 21:17
435 查看
XMLHttpRequest对象在大部分浏览器上已经实现而且拥有一个简单的接口允许数据从客户端传递到服务端,但并不会打断用户当前的操作
1、建立XMLHttpRequest对象
2、注册回调函数
3、使用open方法设置和服务器交互的基本信息
4、设置发送的数据,开始和服务器交互
5、在回调函数中判断交互是否结束,响应是否正确,并根据需要获取服务器端返回的数据,更新页面内容。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>GET请求封装</title>
</head>
<body>
<script type="text/javascript">
// 方法
// get(url, options, callback) get是Ajax请求GET方法的封装
// 参数
// url {String} 请求资源的url
// options {Object} 请求的查询参数
// callback {Function} 请求的回调函数,接收XMLHttpRequest对象的responseText属性作为参数
// 返回
// void
function get(url,options,callback){//定义get函数
//查询参数序列化
function serialize(options){
if(!options){//如果没有查询参数
return "";//返回空字符
}else{//否则
var pairs=[];//定义一个数组
for(var name in options){//遍历对象属性
if(!options.hasOwnProperty(name)) continue;//过滤掉继承的属性和方法
if(typeof options[name]==="function") continue;//过滤掉方法
var value=options[name].toString();//属性值转字符串
name=encodeURIComponent(name);//URI编码
value=encodeURIComponent(value);//URI编码
pairs.push(name+"="+value);//属性名和属性值放入数组
}
return pairs.join("&");//返回字符串
}
}
var xhr=new XMLHttpRequest();//创建Ajax对象
xhr.open("get",url+'?'+serialize(options));//开启一个异步请求
xhr.send(null);//发送请求
xhr.onreadystatechange=function(){//注册事件 处理返回数据
if(xhr.readyState==4){//若请求完毕
if(xhr.status>=200&&xhr.status<300||xhr.status==304){//若请求成功
callback(xhr.responseText);//调用回调函数处理响应结果
}else{//若请求失败
alert('Requst was unsuccessful:'+xhr.status);//返回请求失败原因
}
}
}
}
//举例
// get("/information",{name: "netease", age: 18},function (data) {
// console.log(data);
// });
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>POST请求封装</title>
</head>
<body>
<script type="text/javascript">
// post函数是对Ajax的POST请求的封装,语法如下:
// post(url, options, callback)
// 没有返回值,参数说明如下:
// url:请求资源的url,String类型
// options:请求的查询参数,Object类型
// callback:回调函数,接收XMLHttpRequest对象的responseText属性作为参数,Function类型
function post(url,options,callback){//定义post函数
//查询参数序列化
function serialize(options){
if(!options){//如果没有查询参数
return "";//返回空字符
}else{//否则
var pairs=[];//定义一个数组
for(var name in options){//遍历对象属性
if(!options.hasOwnProperty(name)) continue;//过滤掉继承的属性和方法
if(typeof options[name]==="function") continue;//过滤掉方法
var value=options[name].toString();//属性值转字符串
name=encodeURIComponent(name);//URI编码
value=encodeURIComponent(value);//URI编码
pairs.push(name+"="+value);//属性名和属性值放入数组
}
return pairs.join("&");//返回字符串
}
}
//创建Ajax对象
if(XMLHttpRequest){
var xhr=new XMLHttpRequest();
}else{
var xhr=new ActiveXObject("Microsoft.XMLHTTP");//兼容ie
}
xhr.open("post",url);//开启一个异步请求
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//设置请求头部
xhr.send(serialize(options));//发送请求
xhr.onreadystatechange=function(){//注册事件 处理返回数据
if(xhr.readyState==4){//若请求完毕
if(xhr.status>=200&&xhr.status<300||xhr.status==304){//若请求成功
callback(xhr.responseText);//调用回调函数处理响应结果
}else{//若请求失败
alert('Requst was unsuccessful:'+xhr.status);//返回请求失败原因
}
}
}
}
// 使用示例如下:
// post('/addUser', {name: 'jerry', age: 1}, function(data) {
// //处理返回数据
// });
</script>
</body>
</html>
1、建立XMLHttpRequest对象
2、注册回调函数
3、使用open方法设置和服务器交互的基本信息
4、设置发送的数据,开始和服务器交互
5、在回调函数中判断交互是否结束,响应是否正确,并根据需要获取服务器端返回的数据,更新页面内容。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>GET请求封装</title>
</head>
<body>
<script type="text/javascript">
// 方法
// get(url, options, callback) get是Ajax请求GET方法的封装
// 参数
// url {String} 请求资源的url
// options {Object} 请求的查询参数
// callback {Function} 请求的回调函数,接收XMLHttpRequest对象的responseText属性作为参数
// 返回
// void
function get(url,options,callback){//定义get函数
//查询参数序列化
function serialize(options){
if(!options){//如果没有查询参数
return "";//返回空字符
}else{//否则
var pairs=[];//定义一个数组
for(var name in options){//遍历对象属性
if(!options.hasOwnProperty(name)) continue;//过滤掉继承的属性和方法
if(typeof options[name]==="function") continue;//过滤掉方法
var value=options[name].toString();//属性值转字符串
name=encodeURIComponent(name);//URI编码
value=encodeURIComponent(value);//URI编码
pairs.push(name+"="+value);//属性名和属性值放入数组
}
return pairs.join("&");//返回字符串
}
}
var xhr=new XMLHttpRequest();//创建Ajax对象
xhr.open("get",url+'?'+serialize(options));//开启一个异步请求
xhr.send(null);//发送请求
xhr.onreadystatechange=function(){//注册事件 处理返回数据
if(xhr.readyState==4){//若请求完毕
if(xhr.status>=200&&xhr.status<300||xhr.status==304){//若请求成功
callback(xhr.responseText);//调用回调函数处理响应结果
}else{//若请求失败
alert('Requst was unsuccessful:'+xhr.status);//返回请求失败原因
}
}
}
}
//举例
// get("/information",{name: "netease", age: 18},function (data) {
// console.log(data);
// });
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>POST请求封装</title>
</head>
<body>
<script type="text/javascript">
// post函数是对Ajax的POST请求的封装,语法如下:
// post(url, options, callback)
// 没有返回值,参数说明如下:
// url:请求资源的url,String类型
// options:请求的查询参数,Object类型
// callback:回调函数,接收XMLHttpRequest对象的responseText属性作为参数,Function类型
function post(url,options,callback){//定义post函数
//查询参数序列化
function serialize(options){
if(!options){//如果没有查询参数
return "";//返回空字符
}else{//否则
var pairs=[];//定义一个数组
for(var name in options){//遍历对象属性
if(!options.hasOwnProperty(name)) continue;//过滤掉继承的属性和方法
if(typeof options[name]==="function") continue;//过滤掉方法
var value=options[name].toString();//属性值转字符串
name=encodeURIComponent(name);//URI编码
value=encodeURIComponent(value);//URI编码
pairs.push(name+"="+value);//属性名和属性值放入数组
}
return pairs.join("&");//返回字符串
}
}
//创建Ajax对象
if(XMLHttpRequest){
var xhr=new XMLHttpRequest();
}else{
var xhr=new ActiveXObject("Microsoft.XMLHTTP");//兼容ie
}
xhr.open("post",url);//开启一个异步请求
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//设置请求头部
xhr.send(serialize(options));//发送请求
xhr.onreadystatechange=function(){//注册事件 处理返回数据
if(xhr.readyState==4){//若请求完毕
if(xhr.status>=200&&xhr.status<300||xhr.status==304){//若请求成功
callback(xhr.responseText);//调用回调函数处理响应结果
}else{//若请求失败
alert('Requst was unsuccessful:'+xhr.status);//返回请求失败原因
}
}
}
}
// 使用示例如下:
// post('/addUser', {name: 'jerry', age: 1}, function(data) {
// //处理返回数据
// });
</script>
</body>
</html>
相关文章推荐
- Ajax请求GET/POST方法的封装
- Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
- Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
- Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
- Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
- 【转】Ajax中send方法参数的使用(get/post)
- jquery load() 方法 识别 参数 [data]的请求方式(get/post)
- 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题
- Java乔晓松-ajax中xmlhttprequest的属性、方法和ajax封装post方法
- Javascript-ajax的get/post方法
- AJAX请求 $.post方法的使用
- Prototype 1.6.1和jquery 1.7.2的Ajax Post请求方法对比
- Ajax发关Get和Post请求的方法
- Java如何实现URL带请求参数(get/post)及得到get和post请求url和参数列表的方法
- iOS AFN 封装POST网络请求(AFURLSessionManager) (续一) upload表单提交方法
- php中get post请求方法封装
- Ajax中请求方式(GET/POST)之POST方式
- 防止ajax重复请求的方法(GET和POST)
- Ajax中请求方式(GET/POST)之GET方式
- 初涉Ajax,以post或get方法发送数据,以json或xml形式接收服务器返回的请求