2012-02-27 39 views
2

當我加載像這樣[resultsWebView loadRequest:searchRequest];請求。然後我做這個UIWebView的canGoBack突然停止工作使用POST請求

- (void) webViewDidFinishLoad:(UIWebView *)webView { 
    if ([resultsWebView canGoBack]) { 
     [goBackButton setEnabled:YES]; 
    } 
    else { 
     [goBackButton setEnabled:NO]; 
    } 
    if ([resultsWebView canGoForward]) { 
     [goForwardButton setEnabled:YES]; 
    } 
    else { 
     [goForwardButton setEnabled:NO]; 
    } 
} 

canGoBack總是返回NO。 它工作的更早,但它已經停止工作突然(我沒有做任何代碼更改)。我不知道這怎麼可能?沒有取得任何成功來解決這個問題。在stackoverflow UIWebView canGoBack and canGoForward always return NO有一個問題。但是它與作者使用loadData時不同,他使用loadRequest解決了問題。但我已經在使用loadRequest。再說一遍,它在早些時候工作,但它突然停止工作(我沒有做任何代碼更改)。幫我。

原因問題:

params = [NSString stringWithFormat:@"query=%@", searchTextField.text]; 
NSMutableURLRequest *searchRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://www.example.com/do/m/]]; 
[searchRequest setHTTPMethod:@"POST"]; 
[searchRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]]; 

如果我使用如下的簡單的要求,它工作正常。

NSURLRequest *searchRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://www.example.com/do/m/?%@", params]] ]; 

感謝

+1

什麼不行?它總是返回'沒有'? – Mundi 2012-02-27 13:08:50

+0

是的,它總是返回號碼謝謝。編輯的問題也是如此。 – san 2012-02-27 13:17:26

+0

我找到了原因,但不知道爲什麼會發生這種情況。更新我的問題與原因。 – san 2012-02-27 13:40:14

回答

0

最後,我發現,如果在loadRequest方法的連續POST請求中URL相同,那麼canGoBack不起作用。它正在爲簡單的GET請求工作,因爲URL是不同的。 爲了解決這個問題,我發送了連續的POST請求和兩個URL,它們與UIWebView不同,但從服務器的角度來看實際上是相同的。我通過添加問號(?)來爲連續的POST請求交替設置不同的URL。

https://www.example.com/do/m/

https://www.example.com/do/m/

以這種方式,對於連續POST請求UIWebViewcanGoBack方法起作用,URL變得不同。

不過我不知道它是否是UIWebView中的一個錯誤,或者我們不能使用連續的POST請求與UIWebView來獲得canGoBack方法的工作。

0

的請求可以甚至無法雖然你可以看到在網頁視圖渲染成功的頁面,你還需要設置那些去前進/後退邏輯來– webView:didFailLoadWithError:

+0

我已經這樣做了,並且使用斷點來檢查請求是否失敗。請求不失敗。不管怎麼說,多謝拉。 – san 2012-02-27 13:26:28