2013-10-30 107 views
2

我正在尋找一種在用戶刷新頁面時更改頁面url(更改其中一個url鍵值)的方法。我這樣做是爲了反映頁面內容的變化。我已經嘗試了幾種方法,但他們都有循環問題。下面的方法之一:如何更新頁面刷新頁面的URL?

在我的html頁面:

<body onLoad="CheckPageLoad();"> 
    <input type="hidden" name="trial" id="trial" value="hello" /> 
</body> 

在page.asp頁:(script標籤內)

function CheckPageLoad() { 
    if ($("#trial").val() == "hello") { 
     // This is a fresh page load 
     alert('Load'); 
     $("#trial").val("hi"); 
    } else { 
     // This is a page refresh 
     window.location = url; 
     alert('Refresh'); 
    } 
} 

問題

  1. 每當頁面刷新時,加載警報始終顯示。我以爲裝載完成了一次。它看起來每次刷新頁面時,都會重新加載,所以值始終保持爲hello。
  2. 我只使用腳本標記,並打開新的URL,但保持循環。 (這是主要問題)

任何建議更新上述方法或使用另一種方法來執行刷新是值得讚賞的。下面是其他的方法我也試過:

window.onbeforeunload = unloadPage(); 

function unloadPage() { 
    //do something 
    //works but loops 
} 

感謝

+1

window.location觸發一個頁面刷新,所以你的hello變量被重置。你可以嘗試使用會話來存儲'hello''idea'。 – Silvermind

+0

「_它看起來每次頁面刷新時,都會重新加載_」是的,這是它的工作方式。 –

+0

那麼我該如何打開新的網址並停止循環?它打開新的網址,並且會打開另一個網址,並繼續進行。新網址是相同的網頁,只更改了網址中的一個鍵值。例如:url1 http://www.aaaa.com/?element=1&pool=5和url2是http://www.aaaa.com/?element=1&pool=6。 – user2934637

回答

1

我把下面的代碼放到一個基本的網頁,並說明爲什麼你所得到的描述的行爲:

<html> 
    <head> 
     <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
     <script type="text/javascript"> 
      function CheckPageLoad() { 
       if ($("#trial").val() == "hello") { 
        // This is a fresh page load 
        alert('Load'); 
        $("#trial").val("hi"); 
       } else { 
        // This is a page refresh 
        alert('Refresh'); 
        window.location = window.location + '?id=1'; 
       } 
      } 
     </script> 
    </head> 
    <body onLoad="CheckPageLoad();"> 
     <input type="hidden" name="trial" id="trial" value="hello" /> 
    </body> 
</html> 

當您設置該window.location它改變了網址(嗯!),這意味着你正在加載一個新的頁面。當頁面刷新時,在「加載」之前獲得「刷新」警報。這表明該頁面首先回發,但onload事件導致頁面導航到另一個位置,因此再次加載它。我的理解是,最終更新URL中的任何內容都是新的請求/新加載的頁面。

您可能會發現下面的關於ASP的視圖狀態(看到如你所說,你使用的是ASP頁)有用:http://msdn.microsoft.com/en-us/library/ms972976.aspx

我的建議是完全刪除贊成找你的代碼的window.location = url;部分在反向發佈的數據上。這意味着您不必在回發中不必要地加載頁面兩次,並允許您從任何更新的輸入中訪問數據。

+0

感謝您的詳細回覆。我正在檢查您建議的鏈接。如果我刪除window.location = url2,你還有什麼建議打開url2。 – user2934637

+0

任何人都可以幫助我解決這個問題。警報僅用於調試。每次頁面刷新時都會顯示加載警報。刷新警報不起作用。它看起來每次頁面刷新時,值仍然是你好。 – user2934637

+0

如果您將上面的代碼保存爲html文件,您會發現實際上會顯示刷新警報,在您的代碼中,您可以從頁面中導航,然後才能運行它。如上所述,爲window.location分配一個新值將導致頁面被重新加載而不是刷新。爲什麼需要更改回髮網址? – Wibble