简体   繁体   English

Ajax操作后如何刷新JSP页面

[英]how to refresh the jsp page after ajax action

My problem is I have one html table in jsp page .And i applied dragging and dropping technique for row ordering .I am also saving new order to DB(Mysql) By calling action through AJAX.and displaying the order By using order by sql query .but for second time it is not working well because i am not able to get new rows order for TR id.Please sir share your view on that.I am doing dragging and dropping through Javascript code which is like that: 我的问题是我在jsp页面中有一个html表。并且我将拖放技术应用于行排序。我还通过通过AJAX调用action并通过使用sql查询来显示订单来将新订单保存到DB(Mysql) 。但是第二次它不能正常工作,因为我无法获得TR id的新行顺序。请先生分享您的看法。我正在通过如下代码拖放Javascript代码:

  this.onDrop = function(table, droppedRow ) {
    var rows = this.table.tBodies[0].rows;
    var debugStr = "";
    for (var i=0; i<rows.length; i++) {
        debugStr += rows[i].id+" ";
        alert(debugStr);
        alert(droppedRow.id);
    }
    // document.getElementById('debug').innerHTML = debugStr;
    function ajaxRequest(){
        var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
        if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
            for (var i=0; i<activexmodes.length; i++){
                try{
                    return new ActiveXObject(activexmodes[i])
                }
                catch(e){
                //suppress error
                }
            }
        }
        else if (window.XMLHttpRequest) // if Mozilla, Safari etc
            return new XMLHttpRequest()
        else
            return false
    }

    //Sample call:
    var mypostrequest=new ajaxRequest()
    mypostrequest.onreadystatechange=function(){
        if (mypostrequest.readyState==4){
            if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){
                document.getElementById("gfdg").innerHTML=mypostrequest.responseText
            }
            else{
                alert("An error has occured making the request")
            }
        }
    }
    //var namevalue=encodeURIComponent(document.getElementById("name").value)
    // var agevalue=encodeURIComponent(document.getElementById("age").value)
    var parameters="array="+debugStr+"&maxLimit="+droppedRow.id
    mypostrequest.open("POST", "tableAjaxUpdate.action", true)
    mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
    mypostrequest.send(parameters)
}

and my Html table code is like that. 我的HTML表格代码就是这样。

<tr id="<%= uniqueId%>"> / I am taking this row id from the db(from the exorder column)
    <% System.out.println("AAAuniqueId----->" + uniqueId); %>
    <td height="30" align="center" valign="middle" class="vtd" width="3%">
    <%=dayCount%>
    </td>
   <td height="30" align="center" valign="middle" class="vtd" width="3%">
    <%=exerciseGroupName%>
     </td>

    <td height="30" align="center" valign="middle" class="vtd" width="3%">
    <%=exerciseName%>
    </td>
    <td height="30" align="center" valign="middle" class="vtd" width="3%">
     <%=sets%>

    </td>
    <td height="30" align="center" valign="middle" class="vtd" width="3%">
    <%=reps%>
    </td>
   <td height="30" align="center" valign="middle" class="vtd" width="3%">
   <s:url id="idDeleteExName" action="deleteExNameInCustomtemplate">
        <s:param name="dayCount"> <%=dayCount%></s:param>
        <s:param name="cusExId"><%=cusExId%></s:param>
        <s:param name="routineId"><%=routineId%></s:param>
   </s:url>
  <s:a href="%{idDeleteExName}"><img src="images/tables/delete-icon.png" style="width: 35px;height: 35px;"></s:a>   
  </td>

As far as I under your question your are not getting desired output after your ajax call. 据我所问,您的ajax调用后没有得到期望的输出。 I am giving you some links which we get you through complete concept understanding and solution to your problem ie implementation of ajax call on jsp. 我为您提供了一些链接,这些链接可以帮助您全面理解概念并解决您的问题,即在jsp上实现ajax调用。

Concept flow diagram of AJAX: how ajax works on web page http://www.w3schools.com/ajax/ajax_intro.asp AJAX的概念流程图:ajax如何在网页http://www.w3schools.com/ajax/ajax_intro.asp上工作

If you already know above that... implementation on AJAX on jsp.. here one of the many possible solutions... http://newtechies.blogspot.in/2007/12/simple-example-using-ajax-jsp.html 如果您已经知道上述内容,那么...在jsp上的AJAX上实现..这里是许多可能的解决方案之一... http://newtechies.blogspot.in/2007/12/simple-example-using-ajax-jsp。 html

Below is thread of stackoverflow only over this. 下面是仅在此之上的stackoverflow线程。 ajax and jsp integration Above link gives you other possible solutions also.. ajax和jsp集成上面的链接还为您提供了其他可能的解决方案。

Enjoy coding... :) 享受编码... :)

You can refresh your same location using 您可以使用刷新您的相同位置

location.reload(true) . location.reload(true)

Well, in success of the AJAX call you need to refresh the page. 好吧,要成功进行AJAX调用,您需要刷新页面。 so inside your AJAX call I write as : 所以在您的AJAX通话中,我写为:

var mypostrequest=new ajaxRequest();
mypostrequest.onreadystatechange=function(){
    if (mypostrequest.readyState==4){
        if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){
            document.getElementById("gfdg").innerHTML=mypostrequest.responseText;
            //this is the success point of your AJAX call and you need to refresh here 
            window.location.reload(); //this is the code for reloading
            //but your "gfdg" div data will be lost if you refresh,
            // so start another AJAX call here 
        }
        else{
            alert("An error has occured making the request");
        }
    }
}

But I am afraid that your gfdg div, which have some new data will get lost after reloading the page. 但是,恐怕您的gfdg div(其中包含一些新数据)在重新加载页面后会丢失。 You could another AJAX call instead of refreshing. 您可以调用另一个AJAX而不是刷新。

One more point, you are using the classic AJAX, instead use a more advanced library like jQuery AJAX . 还有一点,您正在使用经典的AJAX,而是使用更高级的库,例如jQuery AJAX It will simplify your code and has much flexibility and browser compatibility. 它将简化您的代码,并具有很大的灵活性和浏览器兼容性。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM