首页 > 解决方案 > 覆盖 Ajax 成功

问题描述

感谢您的阅读。

基本上,我想要做的是覆盖 ajax 成功事件。

在我遇到的大多数指南和问题中,似乎只涉及向成功事件添加回调。我想实际覆盖事件本身。

本质上,我需要能够在 $.ajax 之前捕获成功事件并在 ajax 事件接收数据之前运行我的逻辑。

我目前拥有的是this,但似乎在“this”上下文中更改值无济于事。

var XMLHttpRequestSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(){
    var onError = this.onerror;
    var onLoad = this.onload;

    this.onload = (function(){
        this.response = "new response";
        return onLoad.apply(this, [].slice.call(arguments));
    });

    return XMLHttpRequestSend.apply(this, [].slice.call(arguments));
}

有什么建议么 ?

标签: javascript

解决方案


我找到了解决方案。

以下似乎解决了。

var ajaxContext = $.ajax;
  $.ajax = function(options){

    var success = options.success;
    options.success = (function(data){
      data = data.Results;
      return success.apply(this, [].slice.call(arguments));
    });

    return ajaxContext.apply(this, [].slice.call(arguments));
  };

推荐阅读