我试图弄清楚如何将这个 pushstate 和 popstate 用于我的 ajax 应用程序。我知道有一些插件,但我目前正在尝试学习如何以原始形式使用它。我也知道 IE 不支持原始形式。除此之外,我需要一些帮助来理解如何使用它。
它的 pushstate 部分非常简单。现在我有:
function loadForm(var1,var2){
string = "xyz="+var1+"&abc="+var2;
history.pushState("", "page 1", string);
}
这会很好地更改我的网址并将其添加到我的网址堆栈中。我有另一个函数,如下所示:
function loadForm2(var1,var2, var3){
string = "xyz="+var1+"&abc="+var2+"&123="+var3;
history.pushState("", "page 2", string);
}
第二个函数在调用时也会更改 url。现在我有了那部分,我正试图弄清楚如何使用 popstate。现在我有它如下
window.popState = ajax;
function ajax(){
jQuery.ajax({
type: "get",
url: "../html_form.php",
data: string,
dataType: "html",
success: function(html){
jQuery('#Right_Content').hide().html(html).fadeIn('slow');
validate();
toolTip();
}
})
}
因此,如果您可以使用两个链接对我的页面进行映像,则一个调用 loadForm 函数,另一个链接调用 loadForm2 函数。当我单击每个链接时,表单通过 ajax 加载就好了,并且 url 会发生应有的变化。当我点击后退按钮时,网址将回滚到上一页的网址,但页面内容再次加载当前表单而不是之前的表单。当我点击后退按钮时,它正在进行 ajax 调用(firebug),就好像它正在尝试加载以前的表单一样,但不是运行以前的 ajax 调用,而是运行当前的 ajax 调用。所以我的 url 回到了前一个 url,但加载的表单或调用的 ajax 调用与最近的页面加载(而不是前一个页面加载)相同。
我不确定我做错了什么,任何帮助将不胜感激。