用处: 重写ajax的success或者error的相关方法,可以让我们实现类似设计模式中,装饰模式的效果,可以使我们在在后台返回给前台数据的时候,先调用重写后的ajax中的方法,执行一些操作,然后在执行ajax,实现特定的功能.
我当时在做项目时,我们将项目的整体功能已经做完,我们在项目后期在补做的后台数据校验和SQL注入等功能.为了不再修改前台所有的ajax的success,我们重写了ajax的success方法,在重写的success方法中做统一的判断,判断数据校验后的结果或是否存在SQL注入等问题.
1. 重写ajax
我们在重写ajax的时候,将ajax随意写到任意的一个文件中(也可以写入到jquery.js文件中)
//将原ajax放到_ajax中
_ajax=$.ajax;
$.ajax=function(cfg){
//将原ajax 中的success方法保存为_success
cfg._success=cfg.success;
cfg.cache=false;
//重写ajax的success方法
cfg.success=function(res){
if('string'==typeof(res)){
if ("SQLError"== res) {
alert("参数中含有SQL攻击脚本");
return;
}
if ("XXSError"== res) {
alert("参数中含有XXS攻击脚本");
return;
}
if ("specialError"== res) {
alert("参数中含有非法字符");
return;
}
if ("codeiserror"== res) {
alert("参数在传输过程中被篡改!");
return;
}
if ("useriserror"== res) {
alert("认证标识在传输过程中被篡改!");
return;
}
if ("dataiserror"== res) {
alert("数据在传输过程中被篡改!");
return;
}
}
//如果我们在前面没有return,在这里我们将后台
//返回的数据重新放入原先ajax
if(cfg._success!=null)
cfg._success(res);
}
_ajax(cfg);
}
在我们重写完ajax后,只需要我们将重写完成的ajax文件引入到页面中,就可以访问了.
jquery中ajax其他的方法,也可以像success方法一样重写.我们可以根据需要实现自己的功能.