2012-03-26 16 views
1

Hey alles, was ich versuche, herauszufinden, wie man meinen aktuellen Code aktualisieren, so dass ich die Seite nicht aktualisieren muss, um dies zu tun.Classic ASP Aktualisierung von Daten über AJAX

Allerdings bin ich mir nicht sicher, wie ich das tun kann, wenn man bedenkt, wie mein ASP-Code ausgelegt ist.

Mein Beispiel-Code ist:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 
<% 
Dim Connection 
Dim ConnString 
Dim Recordset 
Dim row1(11) 
Dim row2(11) 
Dim row3(11) 
... 
Dim row29(11) 
Dim intX 
Dim shift(19) 

ConnString="DRIVER={SQL Server};SERVER=xxxxx;UID=xxxxx;PWD=xxxxxxx;DATABASE=rtd" 
SQL = "SELECT * FROM dbo.RTDtable ORDER BY ID" 

Set Connection = Server.CreateObject("ADODB.Connection") 
Set Recordset = Server.CreateObject("ADODB.Recordset") 

Connection.Open ConnString 
Recordset.Open SQL,Connection 

If Recordset.EOF Then 
    Response.Write("No records returned.") 
Else 
    intX = 0 

    Do While NOT Recordset.Eof 
     row1(intX) = Recordset("Production_Date") 
     row2(intX) = Recordset("GroupID") 
     row3(intX) = Recordset("Shift") 
     row4(intX) = Recordset("Shift_Name") 
     row5(intX) = Recordset("Full_Shift") 
     row6(intX) = Recordset("Stn_ID") 
     row7(intX) = Recordset("Stn_ID2") 
     row8(intX) = Recordset("Point_Name") 
     row9(intX) = Recordset("Bucket_1") 
     row10(intX) = Recordset("Bucket_2") 
     row11(intX) = Recordset("Bucket_3") 
     row12(intX) = Recordset("Bucket_4") 
     row13(intX) = Recordset("Bucket_5") 
     row14(intX) = Recordset("Bucket_6") 
     row15(intX) = Recordset("Bucket_7") 
     row16(intX) = Recordset("Bucket_8") 
     row17(intX) = Recordset("Bucket_9") 
     row18(intX) = Recordset("Bucket_10") 
     row19(intX) = Recordset("Bucket_11") 
     row20(intX) = Recordset("Bucket_12") 
     row21(intX) = Recordset("Bucket_13") 
     row22(intX) = Recordset("Bucket_14") 
     row23(intX) = Recordset("Bucket_15") 
     row24(intX) = Recordset("Bucket_16") 
     row25(intX) = Recordset("Bucket_17") 
     row26(intX) = Recordset("Bucket_18") 
     row27(intX) = Recordset("Bucket_19") 
     row28(intX) = Recordset("Bucket_20") 
     row29(intX) = Recordset("Total") 

     intX = IntX + 1 
     Recordset.MoveNext 
    Loop 
End If 

Recordset.Close 
Set Recordset=nothing 
Connection.Close 
Set Connection=nothing 
%> 

Und nach dem Aufruf, dass ich das tun sie in der Tabelle einzufügen:

<tr> 
    <td class="tableHeading">1680-1L</td> 
    <td valign="bottom"><span id="ctl00_ContentPlaceHolder1_dgDetails_ctl06_lblDowntime"></span></td> 
    <td align="left" class="fontSizes">ACTUAL</td> 
    <td align="right"><% response.write row9(1) %></td> 
    <td align="right"><% response.write row10(1) %></td> 
    <td align="right"><% response.write row11(1) %></td> 
    <td align="right"><% response.write row12(1) %></td> 
    <td align="right"><% response.write row13(1) %></td> 
    <td align="right"><% response.write row14(1) %></td> 
    <td align="right"><% response.write row15(1) %></td> 
    <td align="right"><% response.write row16(1) %></td> 
    <td align="right"><% response.write row17(1) %></td> 
    <td align="right"><% response.write row18(1) %></td> 
    <td align="right"><% response.write row19(1) %></td> 
    <td align="right"><% response.write row20(1) %></td> 
    <td align="right"><% response.write row21(1) %></td> 
    <td align="right"><% response.write row22(1) %></td> 
    <td align="right"><% response.write row23(1) %></td> 
    <td align="right"><% response.write row24(1) %></td> 
    <td align="right"><% response.write row25(1) %></td> 
    <td align="right"><% response.write row26(1) %></td> 
    <td align="right"><% response.write row27(1) %></td> 
    <td align="right"><% response.write row28(1) %></td> 
    <td align="right"><% response.write row29(1) %></td> 
    </tr> 
    <tr> 
    <td></td> 
    <td valign="bottom"></td> 
    <td align="left" class="fontSizes">TARGET</td> 
    <td align="right"><% response.write row9(2) %></td> 
    <td align="right"><% response.write row10(2) %></td> 
    <td align="right"><% response.write row11(2) %></td> 
    <td align="right"><% response.write row12(2) %></td> 
    <td align="right"><% response.write row13(2) %></td> 
    <td align="right"><% response.write row14(2) %></td> 
    <td align="right"><% response.write row15(2) %></td> 
    <td align="right"><% response.write row16(2) %></td> 
    <td align="right"><% response.write row17(2) %></td> 
    <td align="right"><% response.write row18(2) %></td> 
    <td align="right"><% response.write row19(2) %></td> 
    <td align="right"><% response.write row20(2) %></td> 
    <td align="right"><% response.write row21(2) %></td> 
    <td align="right"><% response.write row22(2) %></td> 
    <td align="right"><% response.write row23(2) %></td> 
    <td align="right"><% response.write row24(2) %></td> 
    <td align="right"><% response.write row25(2) %></td> 
    <td align="right"><% response.write row26(2) %></td> 
    <td align="right"><% response.write row27(2) %></td> 
    <td align="right"><% response.write row28(2) %></td> 
    <td align="right"><% response.write row29(2) %></td> 
    </tr> 
    <tr> 
etc etc 

So wie würde ich tun, um dieses Update über AJAX, da ich habe, dass im HTML-Code?

Vielen Dank für Ihre Zeit,

David

Beispiel GET:

$.get('resultPage.asp', function(data) { 
    // Extract just the HTML for the table 
    var ixTableStart = data.indexOf('<td', data.indexOf('id="Row9-1"')); 
    var ixTableEnd = data.indexOf('</td>', ixTableStart) + 8; 
    var resultTableHtml = data.substring(ixTableStart, ixTableEnd); 
    $('.Row9-1).html(resultTableHtml); 

etc etc... 
}); 

<tr> 
    <td class="tableHeading">1680-1L</td> 
    <td valign="bottom"><span id="ctl00_ContentPlaceHolder1_dgDetails_ctl06_lblDowntime"></span></td> 
    <td align="left" class="fontSizes">ACTUAL</td> 
    <td align="right" id="row9-1">51</td> 
    <td align="right" id="row10-1">10</td> 
    <td align="right" id="row11-1">16</td> 
    etc..... 
<tr> 
    <td></td> 
    <td valign="bottom"></td> 
    <td align="left" class="fontSizes">TARGET</td> 
    <td align="right" id="row9-2">5</td> 
    <td align="right" id="row10-2">16</td> 
    etc... 
+0

Sind Sie auf der Suche nach grundlegenden Javascript-Lösungen oder etwas, einschließlich eines Frameworks, wie z. B. jQuery, wird akzeptabel sein? –

+0

@GuthMD: jQuery bitte: o) – StealthRT

+0

Ok, nächste Frage. Was aktualisierst du? Sie aktualisieren nur die in der Tabelle angezeigten Werte? Oder der Benutzer hat einige Daten, die sie zurück auf den Server aktualisieren? Was sollte der AJAX leisten? –

Antwort

1

Wenn ich Ihre Frage richtig verstanden habe, alles, was Sie tun, ist die Seite zu aktualisieren, insbesondere die Ergebnisse angezeigt in einer Tabelle, entweder durch einen Klick auf die Schaltfläche oder durch eine setInterval Javascript-Methode.
Vorausgesetzt, dass Sie Ihre Ergebnisse <table> in einem <div> oder ähnlichen Containerelemente mit id Attribut resultPanel und eine Nummer haben, dann können Sie die folgenden Befehle verwenden:

$.get('resultPage.asp', function(data) { 
    FillResultPanel("resultPanel1"); 
    FillResultPanel("resultPanel2"); 
    FillResultPanel("resultPanel3"); 
    FillResultPanel("resultPanel4"); 
}); 
function FillResultPanel(panelId) { 
    // Extract just the HTML for the table 
    var ixTableStart = data.indexOf('<table', data.indexOf('id="' + panelId + '"')); 
    var ixTableEnd = data.indexOf('</table>', ixTableStart) + 8; 
    var resultTableHtml = data.substring(ixTableStart, ixTableEnd); 
    $('#' + panelId).html(resultTableHtml); 
} 

Edit: Wie Sie im Chat erwähnt, die Sie hatten 4 Tabellen zum Aktualisieren, ich habe meine Lösung aktualisiert, um ein Beispiel für dieses Szenario bereitzustellen.

+0

Hum ... würde das die rowX (X) Zahlen innerhalb darstellen Der Tisch? – StealthRT

+0

Es genügt, die Seite in einer asynchronen GET-Anforderung erneut abzurufen und das vorhandene Tabellen-Markup durch die aktualisierte Seite zu ersetzen. Müssen Sie die Zeilen ändern oder auf andere Weise modifizieren * welche * Ergebnisse werden auf der Seite angezeigt? –

+0

Also sagen Sie, dass der Code nur die vollständige Tabellenstruktur in HTML einfügt? Also würde die resultPage.asp Seite nur den Code haben, um den SP und auch den HTML für die Tabellen zu bekommen? Dann legt die Jquery all diese HTML-Tabellen-Daten, die sie "bekommt" in die Hauptseite, wo sie die Tags findet? – StealthRT