Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器&x27;使用ajax调用时的backbutton问题_Javascript_Asp.net_Updatepanel - Fatal编程技术网

Javascript 浏览器&x27;使用ajax调用时的backbutton问题

Javascript 浏览器&x27;使用ajax调用时的backbutton问题,javascript,asp.net,updatepanel,Javascript,Asp.net,Updatepanel,我有一个列表,其中包含通过ajax获取的搜索结果(确切地说,是microsoft updatepanel)。问题是,我不能使用任何webbrowser的backbutton来导航回以前通过ajax获取的列表。你有什么想法吗 谢谢在url中添加一些内容,如page.html#state1,page.html#state2等。这是一种常见的做法您需要让所有ajax调用更新window.location.hash function getAjaxResource(id) { // some aja

我有一个列表,其中包含通过ajax获取的搜索结果(确切地说,是microsoft updatepanel)。问题是,我不能使用任何webbrowser的backbutton来导航回以前通过ajax获取的列表。你有什么想法吗


谢谢

在url中添加一些内容,如
page.html#state1
page.html#state2
等。这是一种常见的做法

您需要让所有ajax调用更新window.location.hash

function getAjaxResource(id) {
  // some ajax stuff
  window.location.hash = 'resource=' + id;
}
然后,您需要使用javascript的setInterval函数向哈希中添加一个观察者

var hash = window.location.hash;
window.setInterval(function () {
  if (window.location.hash != hash) {
    hash = window.location.hash;
    getAjaxResource(hash.replace('resource=',''));
  }
},100);

每次用户单击“后退/前进”时,哈希值都会发生变化,观察者将拾取该变化。

Hi semyon,谢谢你的回答,但我做不到。更新面板使用POST获取新数据。@Erwin-当您发出ajax请求时,您在javascript中设置了哈希值。这不会自动用于asp.net updatepanel,因为它们发布表单数据以获取updatepanel内容的正确数据。如果您按下浏览器后退或前进按钮,它将不再知道该页面状态的正确表单数据,因此它将不知道显示什么。