Servlet加载新页面

时间:2015-04-30 14:35:18

标签: java jquery html ajax servlets

我有以下问题:

我有两个servlet,一个返回导航。 servlet通过DAO获得了类别和子类别。我使用以下脚本将servlet结果放在正确的位置:

$(document).ready(function() {                        
                $('#navigation').load('Navigation');
                $('#content').load('Content');
            });

在我的导航div下面,我有一个内容div。如您所见,我正在加载内容servlet。在我的导航中;我有以下要素:

<li><a><form action='Content' method='get'><button type='submit'>"
                                + k2.getKName() + "</button><input type='hidden' name='category' value='"+ k2.getKategorieNr() + "'/></form></a></li>

现在当我点击子类别时,该按钮将调用内容servlet。问题是,它在没有导航的情况下加载新页面。所以我只能看到servlet在新页面中返回的代码。

如何在我的上一页中获取内容servlet的结果,因为它已经适用于我的导航servlet?

1 个答案:

答案 0 :(得分:1)

最初加载页面时,$("#navigation").load("Navigation")向您的Navigation servlet发出一个AJAX请求,并将来自servlet的HTML响应粘贴回<div id="navigation">之类的元素中。

当您单击表单中的按钮时,您正在向同一个servlet发出顶级整页请求,响应内容将替换整个浏览器窗口,而不是像使用jQuery一样将其粘贴到页面中load

解决这个问题的最简单方法可能是使用jQuery ajaxForm插件: http://malsup.com/jquery/form/

您可以在准备好的回调中执行某些操作,例如

$(document).ready(function() {                        
            $('#navigation').load('Navigation');
            $('#content').load('Content');
            $('#formId').ajaxForm({target: '#content'});
        });

当然,您需要在表单元素中添加一个ID,以便您可以使用jQuery轻松找到它。

请参阅 jQuery ajax - change jQuery target value with form submit

相关问题