我正在使用jQuery 1.9.1,并且有一个问题似乎只是间歇性地发生在移动版Safari上。
问题是对API服务器的调用。大部分时间都很好,但是20%到30%的时间都失败了。
失败意味着 - 没有ajax完成/失败/总是被调用 - 也试过成功/错误/完成,不叫做
我在服务器端看到请求,服务器返回。它可能是超时问题,但服务器通常返回非常快(低于100毫秒)。
而且这只发生在移动版Safari上。似乎更有可能在较旧的iOS(5,6.0,6.1.2)和最新的6.1.4。
我也尝试过jQuery 1.10.2和2.0.3,并遇到了同样的问题。
有没有人有类似的问题?
代码示例
$.ajax({
type: 'POST',
cache: false,
url: gem.conf.apiUrls.user_login_facebook,
data: JSON.stringify(data),
dataType: 'json',
contentType: 'application/json',
beforeSend: gem.auth.set_request_headers
}).done(function(data, textStatus, jqXHR) {
gem.utils.log.debug("gem.auth.login_facebook_impl: ajax done");
}).fail(function(data, textStatus, jqXHR) {
gem.utils.log.debug("gem.auth.login_facebook_impl: ajax fail");
}).always(function(data, textStatus, jqXHR) {
gem.utils.log.debug("gem.auth.login_facebook_impl: ajax always");
});
答案 0 :(得分:0)
这似乎是一个超时问题,一旦我指定了显式超时(2.5秒),事情就会很好。我还清理了周围的代码,但我不认为它们与这个不返回的ajax有关。
答案 1 :(得分:0)
如果可以,请尝试将请求类型从“发布”切换为“获取”。这为我解决了这个问题。我在$ .when中发出一堆帖子请求,而.done会在safari手机上间歇性地发射。可能是因为前面提到的超时问题。我将请求类型切换为'get',一切正常。