我正在構建一個iPhone應用程序,該應用程序顯示一個指向我創建的Web應用程序的UIWebView。用戶交互有時會在UIWebView中產生jQuery ajax請求
Web應用程序頻繁地調用Web服務來調用用於在畫布上爲動畫製作動畫的數據項。數據調用使用jQuery ajax,通過JSON傳遞參數並接收XML響應。
我發現用戶與UIWebView交互正在發生時,javascript setTimeout方法被阻止,似乎根本沒有執行。很公平;有辦法解決這個問題。
但是,主要的問題是,在用戶交互(縮放,平移等)後,時不時的ajax Web服務調用將只會失敗,我無法建立一個原因。即使他們被反複製作,在接下來的幾分鐘內,他們甚至都不會接通網絡服務。如果您完全離開UIWebView,只要Web服務啓動並且存在連接,它們就永遠不會失敗。
任何人都可以提出爲什麼,以及如何解決/解決這個問題?
快速更新:根據Safari移動調試器,錯誤函數中的'響應'對象是未定義的。 (它可以工作,例如,我使URL無效,然後可以通過[webView stringByEvaluatingJavascript:@「lastError」]從objective-c調用該方法,但會拋出一個例外:「觸及uiwebview」錯誤):
$.ajax({
type: "POST",
url: "WebService.asmx/GetValues",
async: true,
data: "{'pageVersionIndex': " + PageVersionIndex + " , 'timeStreamIndex': '" + TimeStream + "'}",
contentType: "application/json; charset=utf-8",
dataType: "xml",
success: function (response) { UpdateControls(response); },
error: function (response, status, errorthrown) {
calling = false;
lastError = response.statusText; //Throws exception
connectionInterrupted = true;
DataRoutine = window.setTimeout(DataService, dataFrequency); }
});
我認爲這將是替代相關的iPhone標籤爲一個好主意其中一個標籤(「web應用程序」也許)。 – Pointy 2011-01-14 14:27:55
好主意,會做。 – 2011-01-14 14:29:31