我有一个带有Javascript树控件的JSP,我希望用户只需按一下按钮就能隐藏或显示这个树,并且这个状态的改变将被传递到访问的其他页面,即如果在页面A,用户隐藏树,然后在页面B,树应保持隐藏,依此类推,直到用户决定显示树。
为此,我使用AJAX在服务器上设置会话变量,在加载页面时检查该变量。现在,当相关页面的URL中没有查询字符串时,此工作正常。
但是页面的网址如下:
如果我调用show / hide按钮,我会收到Java NumberFormatException错误,因为查询字符串丢失了。但是在此之后手动重新加载页面会显示更新树的页面。
树的HTML构建在服务器上,并显示在每个页面的HTML div中。
我的理解是AJAX只是为了更新页面的一部分而且页面以这种方式编写,只允许更新div的内容。但我无法弄清楚为什么查询字符串丢失。
我想知道AJAX是否试图强制整页重新加载?
我知道AJAX调用正确地到达了servlet。但是servlet没有设置为调用另一个页面。
有没有人见过这个,你知道一个解决方法吗?
答案 0 :(得分:2)
每当您对初始请求的响应触发ajaxical请求时,初始请求URL的查询字符串将不会自动传递。您必须自己将其附加到ajaxical请求的URL。 window.location.search
可以获得初始请求的查询字符串。
var ajaxurl = '/someservlet' + window.location.search;
答案 1 :(得分:0)
没有看到涉及的代码,很难推测。有些事情需要考虑:
您可以使用Firebug来验证您的AJAX请求是否正确并在您的servlet中记录以查看正在发生的事情(或者当然使用调试器)。
答案 2 :(得分:0)
约翰
感谢您的回复。
我现在已经部分修复了一些事情,它与从表单按钮触发Ajax有关,该表单按钮也必须进行隐式页面刷新。
Martin O'Shea。