如何在不重新加载整个页面的情况下使用AJAX和JQuery刷新我的JSP?

时间:2014-01-23 09:15:27

标签: java jquery ajax jsp servlets

我有一个使用java jsp servlet的web应用程序。

在我的网络前端的右侧,我有一个右侧有链接的列表。 (这是我的sidebarright.jsp) 如果我按下负图片,将打开一个弹出窗口(弹出窗口也是一个名为deletelink.jsp的jsp页面)。 在弹出页面中,我有一个链接列表,我可以选中复选框,我想删除哪些链接。

所以,如果我删除一个链接,在数据库中它还好,但我必须用F5更新起始端。只有这样我才会看到我删除了一个链接。

所以我想用Ajax和Jquery更新链接列表(sidebarright.jsp),而不是刷新整个起始端。

我的deletelink.jsp页面中的我的ajax和jquery部分删除链接是这样的:

$(document).ready(function(){
    $('#setdeletefilelink').submit(function(){

        var  id=5; 


          $.ajax({
                 url: '<%=request.getContextPath()%>/issues?action=uploaddeletelink&wherestatement='+id,              
                 type: 'POST', 
                 dataType:'json',
                 data: $('#setdeletefilelink').serialize(),
                 success: function(data){
                     alert ("success in ajax");
                     alert(data);
                     //sideBarRight.location.reload();
                    //alert("hallo");
                  //If you want to return anything in jsp.
                   },
                  error:function(xhr, ajaxOptions, thrownError){
                     alert(xhr.status);
                     alert(thrownError);

                     alert("failure");
                     $("#result").html('there is error while submit');
                 }  
                 });
    //    close();

    });


}); 

我对servlet的回应是这个

    if (lstrAction.equalsIgnoreCase("uploaddeletelink")){   
        String wherestatement;


            try{
                LinkUploadService linkUploadService= new LinkUploadService();

                    linkUploadService.deleteLink(wherestatement);

                    //Sende anfrage wieder zurück zur JSP
                    response.setCharacterEncoding("text/json");
                    response.setCharacterEncoding("UTF-8");
                    response.getWriter().println("Hallo ich bin ein Servlet");

                    response.getWriter().write(new Gson().toJson("TEST"));
                }
                else{
                    wherestatement = "";
                }


            }catch(Exception e){

            }
            this.checkAndDoBackgroundAction(request);    
        }

在servlet中执行操作后,不要在ajax脚本部分的“success”部分中获取repsone。我不知道为什么?

并且其中包括:我怎么说刷新右边的条jsp。

1 个答案:

答案 0 :(得分:0)

你说弹出窗口是一个不同的文件。它在iframe中打开了吗? 不会调用成功函数,因为表单已提交,这可能有助于:

$('#setdeletefilelink').submit(function(e){
    e.preventDefault();

没有动作的表单正在提交给自己,也许如果您尝试这样:

$('#setdeletefilelink').submit(function(e){
    //...Ajax call here
    e.preventDefault();
    return false;
});

否则,你必须检查萤火虫,如果有错误或ajax reqeust反正..

作为右侧,在同一页面上,当你获得成功时,它应该是这样的:

success: function(data){
    //an identifire for the right side would be nice
    $("#ID_ofTheRightSide", parent.document).html(data); //depending on what you getting back...
}