覆盖Ajax成功

时间:2018-10-13 02:04:53

标签: javascript

感谢您阅读。

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

在这里,我遇到的大多数指南和问题似乎只解决为成功事件添加回调的问题。我实际上想覆盖事件本身。

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

我目前所拥有的就是这个,但似乎在'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));
}

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

以下似乎可以解决。

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));
  };