如何欺骗jqXHR解析使用本地数据?

时间:2016-05-05 21:44:09

标签: jquery ajax promise jqxhr

这与此问题Make jquery jqxhr act like already sending request类似,但似乎无法解决我的问题。

我正在使用一个框架,其中有很多请求使用jQuery ajax方法完成,我必须在中间挂钩(但不要触及原始代码)来模拟来自服务器的一些响应。 / p>

使用ajaxSend我可以检测到发送请求的时间,所以此时我知道我想要停止哪些并提供我的预计算响应,但是我无法找到方法来执行此操作。一种可能的深层次替代方案是忽略jQuery并寻找服务工作者,但这会限制浏览器的工作范围,这也意味着增加了关于预计算响应的逻辑的复杂性,所以我想留下来jQuery解决方案。

对于初学者,我很乐意通过能够阻止请求触及网络来迈出第一步,但是尽管我试图阻止该事件,但xhr总是被执行。

    $( document ).ajaxSend(function(event, request, settings) {
        console.log(request)
        event.preventDefault()
        event.stopPropagation()
        return false;
    }

然后下一步(或者可能是这一步)正在使用请求对象来解决承诺,但它没有“解决”问题。方法,所以我猜它是restricted Promise

任何人都可以帮我找到解决方案吗?

1 个答案:

答案 0 :(得分:0)

我做了类似的事情,一会儿就覆盖了$.ajax

(function ($) {
    var jqAjax = $.ajax;
    $.ajax = function (settings) {
        if(someCriteriaToDetermineIfItsLocalOrNot) {
           // get from local storage, and return a promise or something
        } else
            return jqAjax(settings);
    };
} (jQuery));