首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何愚弄jqXHR使其始终成功

如何愚弄jqXHR使其始终成功
EN

Stack Overflow用户
提问于 2011-06-15 16:43:34
回答 4查看 1.2K关注 0票数 3

我正在尝试让jQuery的ajax调用总是像成功一样返回,例如,即使我没有网络,我也会返回一些本地保存的数据

这有可能吗?

我尝试使用$.ajaxPrefilter并调用jqXHR的success函数,但它仍然不会表现得好像请求已经完成:(

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-23 02:54:46

好吧,快速更新一下:上面的解决方案都不起作用。

为了解决这个问题,我最终不得不做的是用我的实现替换jQuery的ajax函数,检查是否有网络连接。

如果有,我将代理请求返回到原始ajax函数,否则,我将创建与ajax相同的返回结构并返回它

再说一次,我讨厌回答我自己的问题,特别是当这不是一个真正的答案,而更多的是一个变通的方法。悲哀..。

票数 -1
EN

Stack Overflow用户

发布于 2011-06-28 13:04:17

如果我对你的理解是正确的,你想让jqXHR表现得像它成功了一样,而实际上它失败了?

如果是这样的话,.pipe就是你的朋友:)

代码语言:javascript
复制
var jqDeferred = $.ajax(...something something);

//make the deferred always resolve as success, calling all success callbacks on original.
//AFAIK, dosent pass any arguments to the original success callbacks.
jqDeferred.pipe( null, function(args){ return $.Deferred().resolve(); });

//same as above, but try to pass all arguments through to the success callbacks.
jqDeferred.pipe( null, function(args){ return $.Deferred().resolve.apply(this, arguments); });

我最近想这样做,但找不到任何简单的说明,希望它能有所帮助。我不太确定参数的传递,因为我只在愤怒中使用了第一种形式-我们不需要任何参数传递给我们的成功回调。

管子是邪恶的。

票数 3
EN

Stack Overflow用户

发布于 2011-06-15 16:54:29

我认为您应该根据需要使用任何代码来处理ajax错误。

error(jqXHR、textStatus、errorThrown)

Function请求失败时要调用的函数。该函数接收三个参数: jqXHR (在jQuery 1.4.x,XMLHttpRequest中)对象、描述所发生的错误类型的字符串和一个可选的异常对象(如果发生的话)。第二个参数(除了null之外)的可能值是"timeout“、"error”、"abort“和"parsererror”。当HTTP错误发生时,errorThrown接收HTTP状态的文本部分,例如“未找到”或“内部服务器错误”。从jQuery 1.5开始,error设置可以接受函数数组。每个函数将被轮流调用。注意:对于跨域脚本和JSONP请求,不会调用此处理程序。这是一个Ajax事件。

示例

代码语言:javascript
复制
 error: function (xhr, status, error) {
            var err = eval("(" + xhr.responseText + ")");
            if (err.Message == 'SomeMessage') {
               //Return Your data, handle this error...
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6355117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档