0

我正在开发一个 iOS 应用程序,该应用程序通过UIWebView. 该页面包含 20 到 40 个按钮。每个都向服务器发送一个 ajax 请求。它在大多数情况下都可以正常工作,但服务器是一个桌面应用程序,可以随时出于任何原因关闭而不会发出警告。使用这些 ajax 请求,不会向用户显示任何输出,因此如果服务器出现故障,用户将不知道。我希望能够收到有关 ajax 超时的通知,然后为用户提供重试或返回主屏幕的选项。我似乎无法找到一种方法来UIWebView通知任何失败的 ajax 请求。

起初我以为我可以简单地使用 的webView:didFailLoadWithError:方法UIWebViewDelegate,但显然它没有通知失败的 ajax 请求。

非常感谢任何建议

4

1 回答 1

2

如果发生故障时,在您的 Ajax 故障处理程序中调用 JavaScript 代码,使 location.href 发生更改,则 UIWebViewDelegate shouldStartLoadWithRequest: 方法将被调用,让您有机会在发生故障时执行某些操作。IE

在 Ajax 超时处理代码中:

 window.location.href = "myscheme://AjaxFailure";

在您的 UIWebViewDelegate 处理代码中:

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{
    NSLog(@"shouldStartLoadWithRequest: url: %@", [[request URL] absoluteString]);
    NSURL *URL = request.URL;
    if ([URL.scheme isEqualToString:@"myscheme"])
    {
     ... notify the user there was an error
于 2012-06-19T01:03:01.607 回答