JSP servlet和Ajax的问题

时间:2009-03-09 16:02:21

标签: ajax jsp servlets

我有一个带有Javascript树控件的JSP,我希望用户只需按一下按钮就能隐藏或显示这个树,并且这个状态的改变将被传递到访问的其他页面,即如果在页面A,用户隐藏树,然后在页面B,树应保持隐藏,依此类推,直到用户决定显示树。

为此,我使用AJAX在服务器上设置会话变量,在加载页面时检查该变量。现在,当相关页面的URL中没有查询字符串时,此工作正常。

但是页面的网址如下:

  

http://localhost:8084/myApp/myAppPage?myAppParam=0

如果我调用show / hide按钮,我会收到Java NumberFormatException错误,因为查询字符串丢失了。但是在此之后手动重新加载页面会显示更新树的页面。

树的HTML构建在服务器上,并显示在每个页面的HTML div中。

我的理解是AJAX只是为了更新页面的一部分而且页面以这种方式编写,只允许更新div的内容。但我无法弄清楚为什么查询字符串丢失。

我想知道AJAX是否试图强制整页重新加载?

我知道AJAX调用正确地到达了servlet。但是servlet没有设置为调用另一个页面。

有没有人见过这个,你知道一个解决方法吗?

3 个答案:

答案 0 :(得分:2)

每当您对初始请求的响应触发ajaxical请求时,初始请求URL的查询字符串将不会自动传递。您必须自己将其附加到ajaxical请求的URL。 window.location.search可以获得初始请求的查询字符串。

var ajaxurl = '/someservlet' + window.location.search;

答案 1 :(得分:0)

没有看到涉及的代码,很难推测。有些事情需要考虑:

  • 您是如何制作AJAX请求的,即您是使用已建立的框架(如jQuery或Prototype),还是自己推出?
  • 显示/隐藏按钮后面有什么代码?
  • 您的servlet如何响应请求?

您可以使用Firebug来验证您的AJAX请求是否正确并在您的servlet中记录以查看正在发生的事情(或者当然使用调试器)。

答案 2 :(得分:0)

约翰

感谢您的回复。

我现在已经部分修复了一些事情,它与从表单按钮触发Ajax有关,该表单按钮也必须进行隐式页面刷新。

Martin O'Shea。