2011-03-09 81 views
0

用戶在我的網站上創建帳戶後,我想將用戶重定向到主頁並在頂部顯示一個Twitter樣式的消息欄。這是我的方式:如何在重定向後立即執行JavaScript操作?

success: function (response) { 
      if (response.Success) { 
       location.href = response.ReturnUrl; 
      } 

      ShowMessageBar(response.Message);     
     }, 

消息欄確實出現,但只有第二次顯示消息欄,因爲它被重定向取消。在重定向完成後,我能做些什麼來顯示消息?是否有location.href的完整事件?謝謝。

回答

2

這將需要jQuery的Cookie的插件:

http://plugins.jquery.com/project/Cookie

把你的主頁的標題這樣的話:

jQuery(function($){ 
    if($.cookie("message")) { 
    ShowMessageBar($.cookie("message")); 
    $.cookie("message", "any_value", { expires: -1 }); 
}); 

而在你成功的功能:

success: function (response) { 
     if (response.Success) { 
      $.cookie("message", response.Message); 
      location.href = response.ReturnUrl; 
     } 
    }, 
+0

一旦消息欄顯示正確,我需要刪除cookie。 – Prabhu 2011-03-09 21:22:18

+0

是的!我修復了它。 – 2011-03-09 21:35:41

+0

$ .cookie(「message」,null)似乎沒有刪除它。消息不斷出現在每次重新加載的頁面上。我錯過了什麼嗎? – Prabhu 2011-03-09 21:53:43

1

一旦頁面的URL更改所有執行停止並轉移到新頁面。將參數傳遞給觸發您想要的事件的新頁面。

+0

我試圖通過傳遞一個查詢字符串參數?newUserMsg但問題是,messa ge會在每次用新查詢字符串加載新用戶時刷新。是否有一種方法可以在使用它來避免此問題後立即從url中刪除查詢字符串? – Prabhu 2011-03-19 02:04:17

0

聽起來像你需要從重定向的URL調用ShowMessageBar()。

0

您可以發送一個參數並在文檔準備就緒時檢查它的存在。可能是達到預期效果的最簡單方法。

3

您需要將其傳遞給cookiequesrystringlocalStorage。 像這樣使用本地存儲或餅乾(localStorage的是IE8 +和大多數其他瀏覽器):

在當前頁面:

if('localStorage' in window) 
    localStorage.setItem('message', response.Message); 
else // use cookie 

在新頁面:

$(function(){ 
    if('localStorage' in window && !!localStorage['message']) { 
     ShowMessageBar(localStorage['message']); 
     localStorage.removeItem('message'); 
    } 
    else // use cookie 
}); 

如果您對這些技術感到不舒服有jQuery插件包裝這個功能。我會推薦jstorage

+0

一旦顯示消息欄,我可以從url中刪除消息,因此它不會一直顯示嗎? – Prabhu 2011-03-09 21:15:56

+0

如果你不希望它被看到,我會建議使用localStorage或cookie。我會更新我的帖子 – 2011-03-09 21:18:32

+0

感謝您的輸入。我最終使用了塞巴斯蒂安的版本,這似乎是個伎倆。閱讀本地存儲後,必須嘗試一下。 – Prabhu 2011-03-09 21:38:07

0

如果您確實想要顯示該消息,您可以在重定向它們之前始終將其置於警報狀態,然後再重定向它們,直到它們單擊「ok」爲止。

+0

總是有警報:-)但我需要在我的自定義消息欄上顯示它。謝謝。 – Prabhu 2011-03-09 21:21:36