【问题标题】:Get Ajax Previous Request with Browser Back Button使用浏览器后退按钮获取 Ajax 上一个请求
【发布时间】:2013-04-26 07:11:00
【问题描述】:

我正面临 Ajax 请求在后退按钮上的情况。

我创建了一个表单,该表单根据给定的过滤器并加载到特定的 div 上,通过 ajax 请求发布值并返回结果。当我单击页面上的任何链接时,它会按预期打开新的 url。单击浏览器后退按钮时,它会打开具有默认值的前一个表单页面。如何启用浏览器状态功能,以便使用浏览器后退按钮获得最后发布的值的结果。请注意,ajax 的类型是 POST

我得到的一个解决方案是将此表单类型修改为 GET 而不是 POST,但这将花费大量时间来更改服务器端代码。

var page_url = $(this).attr('href');
page_url = page_url.split(':');
var page = page_url['1'];

$form = $('#form);

        $.ajax({
        type: 'POST',
        data: $form.serialize(),
        url: webroot + 'controller /action/page:'+page
        }).done(function (result){
})

我想知道可能的解决方案。

【问题讨论】:

  • 使用push statepop state....

标签: php javascript jquery ajax browser-history


【解决方案1】:

你可以使用 Jquery .unload() 函数或尝试cookies 你可以从这里阅读它How do I set/unset cookie with jQuery?

【讨论】:

  • 在这种情况下如何使用 .unload 方法?
  • 也许你可以用它来触发从另一个页面传输一个页面?
【解决方案2】:

一旦你提交了那个时间不要去新页面,只需隐藏表单元素并在其他 div 中显示新内容。单击后退按钮后,只需显示以前隐藏的 div 并隐藏当前显示的 div

【讨论】:

  • 我无法在同一页面上加载新内容,因为它有单独的视图。我不能对使用新链接打开的每个视图都使用隐藏/显示
【解决方案3】:

您应该将cache 设置为false:

$.ajax({
    dataType: "json",
    url: url,
    cache: false,
    success: function (json) {...}
});

来源https://stackoverflow.com/a/25230377

【讨论】:

    猜你喜欢
    • 2010-12-13
    • 2010-09-14
    • 2011-09-18
    • 1970-01-01
    • 2014-05-14
    • 2012-01-19
    • 2013-03-02
    • 2018-07-11
    • 2023-03-30
    相关资源
    最近更新 更多