2012-03-29 8 views
0

Mein Problem ist, ich habe eine HTML-Tabelle in JSP-Seite. Und ich angewendet Drag-and-Drop-Technik für die Reihenfolge der Reihenfolge .Ich auch neue Reihenfolge zu DB (Mysql) durch Aufruf Aktion durch AJAX.und Anzeige der Reihenfolge Durch die Verwendung der Reihenfolge nach SQL-Abfrage. Aber zum zweiten Mal funktioniert es nicht gut, weil ich nicht in der Lage bin, neue Zeilenreihenfolge für TR ID zu bekommen. Bitte teilen Sie Ihre Sicht auf das. Ich mache Drag and Drop durch Javascript-Code, der so ist:Wie aktualisiert man die JSP-Seite nach AJAX-Aktion

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) 
} 

und meine HTML-Tabelle Code ist so.

<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> 

+0

AJAX ist zum Abrufen einiger serverseitiger Daten gedacht, ohne die Seite zu aktualisieren. Wenn Sie die Seite aktualisieren möchten, warum AJAX? Reichen Sie stattdessen eine '

' ein. Und wenn Ihre Anforderung ist, die Seite zu aktualisieren, nachdem der AJAX-Aufruf abgeschlossen wurde, gibt es auch in JavaScript eine Problemumgehung. Aber es ist schwer, einen Ratschlag zu geben, ohne zu sehen, was Sie tun. Bitte posten Sie Ihren Code, wenn Sie das Problem noch haben. – tusar

+0

Herr, wenn ich eine Reihe ziehen und es an einem anderen Ort fallen dann ruft diese Javascript-Funktion this.onDrop = Funktion (Tabelle, droppedRow), so dass für die Aktualisierung auf neue Reihenreihenfolge ich AJAX anrufen muss. YOu kann Code sehen mein Post.und nach dem Ausführen der Aktion ich die gleiche JSP wieder zurück, aber dieses Mal bekomme ich nicht wieder Zeile ID in UI.Bitte sir teilen Sie Sicht, ich kämpfe in es seit vielen Tagen. –

Antwort

0

Soweit ich unter Ihrer Frage Sie nicht gewünschte Ausgabe nach dem Ajax-Aufruf zu bekommen. Ich gebe Ihnen einige Links, die wir Ihnen durch vollständiges Konzept Verständnis und Lösung für Ihr Problem, d. H. Die Umsetzung von Ajax Aufruf auf JSP.

Konzept Flussdiagramm AJAX: wie Ajax-Werke auf der Webseite http://www.w3schools.com/ajax/ajax_intro.asp

Wenn Sie bereits über diesem ... Implementierung auf AJAX auf jsp wissen .. hier eine der vielen möglichen Lösungen ... http://newtechies.blogspot.in/2007/12/simple-example-using-ajax-jsp.html

Unten ist Thread von Stackoverflow nur darüber. ajax and jsp integration Link oben gibt Ihnen andere mögliche Lösungen auch ..

Genießen Codierung ... :)

0

Sie können Ihre gleichen Ort aktualisieren

location.reload(true) verwenden.

+0

Wo muss ich diesen Code in meinem Code hinzufügen, um die Seite wieder zu aktualisieren.Sir, ich poste meinen Code oben, bitte haben Sie eine Uhr darauf. –

+0

Ich weiß nicht, wo genau Sie jsp Seite aktualisieren möchten.wie auch immer, können Sie eine Sache, die Java-Script-Funktion wie dieses und einen Anruf geben, wo Sie ... realod wollen, wenn Sie mehr Zweifel haben hier posten. –

+0

Ich möchte über HTML-Code erneut laden, wenn die Antwort vom Server zurück. –

0

Nun, bei Erfolg des AJAX-Aufrufs müssen Sie die Seite aktualisieren. so in Ihrem AJAX-Aufruf schreibe ich als:

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"); 
     } 
    } 
} 

Aber ich habe Angst, dass Ihre gfdg div, die einige neue Daten hat nach dem erneuten Laden der Seite verloren. Du könntest einen anderen AJAX-Anruf anstatt auffrischen.

Noch ein Punkt, verwenden Sie den klassischen AJAX, verwenden Sie stattdessen eine erweiterte Bibliothek wie jQuery AJAX. Es wird Ihren Code vereinfachen und bietet viel Flexibilität und Browser-Kompatibilität.

+0

Sir die Situation ist so, dass ich über HTML-Code in separaten JSP (call.jsp) und fügen Sie diese jsp (call.jsp) zu einigen anderen jsp.now ich ziehe und lösche Zeile von Tabelle und Aktualisieren des Servers.und Zurückgeben der call.jsp in ** gfdg div ** aber meine ** gfdg div ** ist nicht erfrischend warum? –

+0

gibt der AJAX-Aufruf wirklich einen Wert zurück? Was passiert, wenn Sie eine 'alert (mypostrequest.responseText);' – tusar

Verwandte Themen