【问题标题】:How can I refresh with AJAX and JQuery my JSP without reloading the whole page?如何在不重新加载整个页面的情况下使用 AJAX 和 JQuery 刷新我的 JSP?
【发布时间】:2014-01-23 09:15:27
【问题描述】:

我有一个带有 java jsp servlet 的网络应用程序。

在我的网络前端的右侧,我有一个右侧的链接列表。 (这是我的 sidebarright.jsp) 如果我按下减号图片,则会打开一个弹出窗口(弹出窗口也是一个名为 deletelink.jsp 的 jsp 页面)。 在弹出页面中,我有一个链接列表,我可以使用复选框选择要删除的链接。

所以如果我删除一个链接,在数据库中它没问题,但我必须用 F5 更新 startside。只有这样我才会看到我已经删除了一个链接。

所以我想用 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 脚本部分的我的成功部分中没有得到响应。我不知道为什么?

另一件事是:我怎么能说刷新右侧栏jsp。

【问题讨论】:

  • 你写alert ("success in ajax");成功了,这说明了吗?
  • 不,它不显示警报窗口。
  • 是否显示失败警报?
  • 我过去,我有一个错误,然后它显示我失败警报。错误是没有任何东西发送到 servlet。但现在它正在向 servlet 发送请求,现在它没有显示任何警报。既不失败也不成功
  • 您可能会在 java 端中断,但由于您的 catch 块不会转储堆栈,因此您看不到实际问题。即使没有帮助,在其中包含 e.printStackTrace() 也是一个好主意。

标签: java jquery ajax jsp servlets


【解决方案1】:

您说弹出窗口是一个不同的文件。那么它是在iframe中打开的吗? 没有调用成功函数,因为表单已提交,也许这会有所帮助:

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

一个没有动作的表单正在提交给它自己,也许你试试这个:

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

否则,您必须检查 firebug,如果有错误或 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...
}

【讨论】:

  • 现在它不是 iframe。这是一个将打开的 jsp 文件。如果我单击一个复选框,可能会删除数据库上的链接,popopwindow 将关闭,但在起始页的侧边栏上没有任何反应。所以我必须按 F5 然后我才能看到结果。但我想要结果而不按 F5
  • 哦,哦。弹出,一个新窗口.. :) 好久没用了! :) 和sidebarright.jsp,它是如何包含在内的?
  • 不调用successerror,但仍然得到删除的东西很确定提交form,在ajax甚至可以调用success之前...对于其他问题,需要更多信息。
  • 它包含在 index.jsp 中(所以在起始页中)并代表右侧栏
猜你喜欢
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
  • 1970-01-01
相关资源
最近更新 更多