代码之家  ›  专栏  ›  技术社区  ›  UpTheCreek

Ajax更新了用户界面和后退按钮

  •  6
  • UpTheCreek  · 技术社区  · 15 年前

    脚本:

    • 页面上加载了复杂的UI。
    • 用户执行一些操作,通过Ajax回调更改数据,更改通过DOM操作(例如,通过jquery)反映在UI上。
    • 用户单击一个链接转到另一个页面(比如详细信息页面)。
    • 用户单击“上一步”按钮返回原始用户界面页面。
    • 用户看到过期信息 - 看起来他(在步骤2中)所做的更改从未发生过。

    你如何处理这种情况?

    4 回复  |  直到 12 年前
        1
  •  2
  •   user350162    15 年前

    饼干。用户离开页面返回后保存信息的唯一方法是使用cookie。

    更好的方法是

    0. user goes to your page 
    1. A page is loaded with complex UI based on what is saved in the users cookies (default if no cookie)
    2. user does some actions, which are saved into the cookie
    3. user goes to another page
    
        2
  •  2
  •   Adam    15 年前

    当按下后退按钮时,您可以强制页面刷新,然后从服务器中提取更新的数据。

    <META http-equiv="Cache-Control" content="no-cache">
    <META http-equiv="Pragma" content="no-cache">
    <META http-equiv="Expires" content="-1">
    

    你可能还想看看 Real Simple History 看看你能不能利用他们的技术来使用后退按钮。

        3
  •  1
  •   Metropolis    15 年前

    无论传递到下一页的数据是什么,也需要将其传回,以将UI更改为它需要的方式。

    这可以通过cookies来完成,也可以使用Post数据/服务器端逻辑来完成。只需将值传递到第二页,当用户想要返回时,也要确保将它们传递回,并根据值更改界面。你甚至可以用一个你想要的疗程,但我认为如果这是你唯一需要的地方,那可能会太过分。

    大都市

        4
  •  0
  •   Andro Selva Anand Wadhwani    12 年前

    饼干不是唯一的方法。想想jquery bbq插件。见 http://mattfrear.com/2010/03/20/enabling-browser-back-button-on-cascading-dropdowns-with-jquery-bbq-plugin/

    基本上,它使用添加到查询字符串中的变量来愚弄浏览器,使其认为这是一个新页面,因此如果要刷新或返回该页面,变量将重新填充控件。