2011-03-09 50 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