我正在尝试让jQuery的ajax调用总是像成功一样返回,例如,即使我没有网络,我也会返回一些本地保存的数据
这有可能吗?
我尝试使用$.ajaxPrefilter并调用jqXHR的success函数,但它仍然不会表现得好像请求已经完成:(
谢谢!
发布于 2011-06-23 02:54:46
好吧,快速更新一下:上面的解决方案都不起作用。
为了解决这个问题,我最终不得不做的是用我的实现替换jQuery的ajax函数,检查是否有网络连接。
如果有,我将代理请求返回到原始ajax函数,否则,我将创建与ajax相同的返回结构并返回它
再说一次,我讨厌回答我自己的问题,特别是当这不是一个真正的答案,而更多的是一个变通的方法。悲哀..。
发布于 2011-06-28 13:04:17
如果我对你的理解是正确的,你想让jqXHR表现得像它成功了一样,而实际上它失败了?
如果是这样的话,.pipe就是你的朋友:)
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); });我最近想这样做,但找不到任何简单的说明,希望它能有所帮助。我不太确定参数的传递,因为我只在愤怒中使用了第一种形式-我们不需要任何参数传递给我们的成功回调。
管子是邪恶的。
发布于 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事件。
示例
error: function (xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
if (err.Message == 'SomeMessage') {
//Return Your data, handle this error...
}
}https://stackoverflow.com/questions/6355117
复制相似问题