我正在使用jQuery 1.9.1,並且有一個問題似乎只是間歇性地發生在移動Safari上。ajax在iPhone上調用Safari不會返回
- 在按鈕上單擊,調用FB.login,在移動Safari上彈出一個新頁面並要求用戶登錄到FB。之後,頁面關閉,控件返回到上一頁。
- 當FB.login返回時,獲取ID和訪問令牌,並調用我們的API /後端服務器的ajax調用嘗試登錄
- 登錄調用API返回,如果響應成功,重定向到主頁,如果響應是「用戶不存在」,呈現創建帳戶頁面
問題是調用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");
});
你調試了嗎?你可以使用[JSBin遠程](http://www.elijahmanor.com/2011/03/jsconsole-remote-debugging-and-jsbin.html)或任何遠程JavaScript工具輕鬆調試,有幾十個左右。 – balexandre
當我調試時,它工作得很好 – Jonathan