来大神:重新$.ajax方法后,$("#id").load(url)方法无效

wingfly110 2015-03-13 12:42:55
问题描述:重新ajax方法后,$("#id").load(url)方法调用成功后不显示url中的内容,重写前无问题;

ajax重写如下:
jQuery(function ($) {
//备份jquery的ajax方法
var _ajax = $.ajax;
//重写jquery的ajax方法
$.ajax = function (opt) {
//备份opt中error和success方法
var fn = {
error : function (XMLHttpRequest, textStatus, errorThrown) {},
success : function (data, textStatus) {
alert(1);
}
}
if (opt.error) {
fn.error = opt.error;
}
if (opt.success) {
fn.success = opt.success;
}
//扩展增强处理
var _opt = $.extend(opt, {
error : function (XMLHttpRequest, textStatus, errorThrown) {
//错误方法增强处理
fn.error(XMLHttpRequest, textStatus, errorThrown);
},
success : function (data, textStatus, xhr) {
//成功回调方法增强处理
fn.success(data, textStatus);
},
statusCode : { //传入statusCode对象,定义对状态码操作的方法
900 : function () { //900为服务器返回的自定义状态码,说明用户登录超时
alert("用户登录超时,请重新登录!");
window.location.href = "<%=path%>/login.jsp";
return;
},
901 : function () { //901为服务器返回的自定义状态码,说明当前操作没有权限
alert("用户无此操作权限,请联系管理员!");
//window.location.href= "<%=path%>/login.jsp";
return;
}
}
});
_ajax(_opt);
};
});
...全文
319 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
未知数 2015-03-16
  • 打赏
  • 举报
回复
引用 4 楼 wingfly110 的回复:
[quote=引用 2 楼 wzs_xyz 的回复:] [quote=引用 1 楼 wzs_xyz 的回复:] 把_ajax(opt)改为_ajax.apply(this, arguments); 试试
改为 return _ajax.apply(this, arguments);[/quote] 果真有效,求解答[/quote] 你想想jquery.ajax能用什么方式实现load方法注册回调,能想出方法就明白了,没多余的方法,只能是通过ajax函数的返回值,因为两个函数(ajax和load)没其他的能够共享的对象了 大概就是: $.ajax(...).load(...)可以分离写为 var obj = $.ajax(...); obj.load(...); load函数里面的this指向obj,而obj是ajax函数返回的,两个函数的作用域里面都可以访问这个对象,所以用它来传递参数最方便 所以要保持这个功能,你的ajax函数也必须实现这个返回值,不然回调函数就不能传递到ajax函数中了
wingfly110 2015-03-13
  • 打赏
  • 举报
回复
引用 2 楼 wzs_xyz 的回复:
[quote=引用 1 楼 wzs_xyz 的回复:] 把_ajax(opt)改为_ajax.apply(this, arguments); 试试
改为 return _ajax.apply(this, arguments);[/quote] 果真有效,求解答
wingfly110 2015-03-13
  • 打赏
  • 举报
回复
感谢大神,能大概说下原因吗
未知数 2015-03-13
  • 打赏
  • 举报
回复
引用 1 楼 wzs_xyz 的回复:
把_ajax(opt)改为_ajax.apply(this, arguments); 试试
改为 return _ajax.apply(this, arguments);
未知数 2015-03-13
  • 打赏
  • 举报
回复
把_ajax(opt)改为_ajax.apply(this, arguments); 试试

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧