2014-09-03 54 views
0

我目前正在創建一個網站。我被卡住的問題是我無法使用Javascript重定向到另一個ASPX頁面。這裏是我的代碼:Javascript重定向不工作ASP.NET

<asp:Button ID="Save" runat="server" Text="Schedule" CssClass="vs-btn mT10" OnClientClick="return SendFormValuesForXml(); return false;" /> 

上面的Javascript函數執行AJAX調用,併成功後我重定向到另一個頁面,其中有幾件事情正在執行。 AJAX呼叫轉到這裏:

var responseString =「」;

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "Default.aspx/MakeXml", 
    dataType: "json", 
    data: "{'data':'" + stringToSend + "'}", 
    async: false, 
    cache: false, 
    success: function (result) { 
     debugger; 
     window.location.reload(true); 
     var valuationUrl = window.location.protocol + "//" + window.location.host + "/ValuationList.aspx"; 
     window.location.assign(valuationUrl); 
     return false; 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     alert("Status: " + textStatus); alert("Error: " + errorThrown); 
    } 
}); 

現在一切正常,除了成功函數中的重定向。任何想法是什麼干擾的JavaScript? 附加信息:

  1. 沒有更新面板正在頁面上,或者網站的其他頁面。
  2. 瀏覽器不會拋出任何錯誤,但Chrome瀏覽器'jquery.min.map'找不到錯誤。

我迄今爲止嘗試:

  1. document.location.replace(valuationUrl);
  2. location.href = valuationUrl;
  3. $(location).attr('href',valuationUrl);

這是在堆棧溢出的這個link提及的所有其他選項。

更新:不好解決我採用 做了很多事情,比如到一個不可見的按鈕,其點擊運行服務器端功能重定向頁面和其他的東西,所有的人都失敗了。 我所做的是我設置一個隱藏的字段爲0,然後將其值更新爲1.稍後當同一頁面加載時,我檢查它的值是否爲1,因此我強制重定向到下一頁。

+1

您可以使用'window.location.href =「/valuationlist.aspx」'。你不需要做任何協議的東西。 – royhowie 2014-09-03 16:51:53

+0

不,這沒有奏效。我應該刪除'reload()'嗎? – FreshDev 2014-09-03 17:04:55

+0

是的,這應該是成功塊下的唯一代碼行(除非在重新加載之前還需要做其他事情)。 – royhowie 2014-09-03 17:07:06

回答

1

嘗試window.location = valuationUrl; - 如果它有效,那麼由於您重定向的域與重定向的域不同,您將遇到安全違規。

Mozilla Developer Network Location.Assign

的Location.assign()方法導致窗口加載和顯示在所指定的URL的文件。

如果由於安全違規而無法執行賦值,則會引發SECURITY_ERROR類型的DOMException。如果調用方法的腳本的起源與最初由Location對象描述的頁面的起源不同,主要是當腳本託管在不同的域上時,會發生這種情況。

Mozilla Developer Network Location.Replace

的位置。replace()方法使用提供的URL替換當前資源。與assign()方法的不同之處在於,在使用replace()之後,當前頁面將不會保存在會話歷史中,這意味着用戶將無法使用後退按鈕導航到它。

如果由於安全違規而無法執行賦值,則會引發SECURITY_ERROR類型的DOMException。如果調用方法的腳本的起源與最初由Location對象描述的頁面的起源不同,主要是當腳本託管在不同的域上時,會發生這種情況。

+0

'window.location'不起作用。我曾嘗試,但它仍然沒有鍛鍊。 'location.assign()'和'location.replace()'已被使用。但是執行它們後我找不到任何錯誤。 – FreshDev 2014-09-03 17:07:53

1

window.location.reload(true)會導致頁面從服務器重新加載。我很確定這意味着它不會繼續執行該函數的其餘部分。

+0

我以前沒有。當我試圖找到解決問題的方法時,我發現了它。我只是補充一些想法可能是某些緩存可能會做一些概率。所以添加它,以強制Javascript從服務器加載。頁面不加載也沒有它。 – FreshDev 2014-09-03 17:09:29

1

試試這個。

success: function (result) { 
     var valuationUrl = window.location.protocol + "//" + window.location.host + "/ValuationList.aspx"; 
     window.location.href=valuationUrl; 
     return false; 
    }, 
+0

不,它沒有工作。 – FreshDev 2014-09-03 18:21:00