基于jQuery的ajax方法封装

基于jQuery的ajax方法封装

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方法封装。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!

基于jQuery的ajax方法封装