这与此问题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
任何人都可以帮我找到解决方案吗?
答案 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));