AJAX是一种创建快速动态网页的技术。本文主要介绍基于jQuery的ajax方法封装的相关信息,有需要的朋友可以参考一下。
ajax (ajax开发)简介
AJAX,即“异步Javascript和XML”(Asynchronous Javascript And XML),指的是一种用于创建交互式web应用的web开发技术。
AJAX=异步JavaScript和XML(标准通用标记语言的子集)。
AJAX是一种创建快速动态网页的技术。
AJAX可以通过在后台与服务器交换一点数据,使网页异步更新。这意味着您可以更新网页的某些部分,而无需重新加载整个网页。
在实际项目中,ajax的使用频率很高,所以虽然jquery或者其他类似的js库已经做了非常好的封装,但是仍然有进一步封装和简化的空间和必要。
比如,很久以前,我的ajax是这样写的:
$.ajax({
网址: www.baidu.com/getInfo ,
类型: POST ,
数据:{
姓名:“杰克”,
年龄:18岁
},
数据类型: json ,
成功:功能(响应){
//回调
},
错误:函数(err){
//错误代码
}
});
乍一看很好,没有问题,但实际上,成功回调中的逻辑可能非常复杂,ajax回调中甚至可能还有另一个ajax。然后这种文笔很烂,全混了。
你可以做一个简单的封装,这个在之前的Deferred object的短文中已经提到了。
函数ajax(url,param,type) {
//ajax被jquery延迟对象回调封装,使用done()、fail()和always()进行链式回调
//如果需要更多的参数,比如跨域数据类型需要设置为‘jsonp’,可以考虑将参数设置为objects。
返回美元。ajax({
网址:网址,
data: param || {},
type: type || GET
});
}
//链式回调
ajax(www.baidu.com/getInfo )。完成(功能(责任){
//回调成功
}).失败(函数(错误){
//回调失败
});
然而,尽管走了这一步,问题还是会来。比如我们公司在成功回调中有一层逻辑判断,像这样:
//本公司ajax返回的json数据格式
//当结果为false时,msg中通常会有一条错误消息
{
结果:真,
数据:{
姓名:“杰克”
},
消息:空
}
ajax(www.baidu.com/getInfo )。完成(功能(责任){
//回调成功
if(resp.result){
resp中的结果为真时的动作
//往往这个时候要处理resp中的数据对象信息。
}
否则{
//当结果为假时,往往根据resp中的另一个属性msg来判断具体的处理。
}
}).失败(函数(错误){
//回调失败
});
有两个问题:
第一,我需要在每一个ajax中写同样的相对固定的逻辑判断(每个公司或项目组可能不一样,但就项目本身而言必须是固定的,或者放大到公司),我觉得很烦。
第二,如果我只想专注于数据处理,比如在一次成功的回调中,我直接得到要处理和渲染的数据,在一次失败的回调中,我直接得到错误的代码。有没有可能做进一步的封装?
其实这两个问题是一体的。综上所述,我就是不想写那么多如果别的。有句话我觉得说得好。逻辑是守恒的,但如果是可预见的逻辑,就有可能简化。我们的显然是可预见的逻辑。
二次封装使用延迟对象的then方法。有关详细信息,请参见代码:
函数句柄Ajax(url,param,type) {
返回ajax(url,param,type)。然后(函数(响应){
//回调成功
if(resp.result){
返回响应数据;//将待处理的数据作为默认参数传入后,直接作为done()方法的回调返回。
}
否则{
返回美元。延期()。拒绝(resp . msg);//返回一个失败状态的延迟对象,将错误代码作为默认参数传入后回调fail()方法。
}
},函数(错误){
//回调失败
console . log(err . status);//打印状态代码
});
}
handle Ajax( www . Baidu . com/getInfo )。完成(功能(责任){
//当结果为真时回调
}).失败(函数(错误){
//当结果为假时回调
});
这进一步简化了前面的代码,方便了维护。举个例子,如果有一天我告诉你,result不再是布尔值,它会直接改成状态码之类的东西。如果我按照之前的ajax写一个判断,那就太疯狂了。
以上是边肖介绍的基于jQuery的ajax方法封装。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!