2012-03-26 72 views
1

嘿,我想知道如何去更新我的当前代码,这样我就不必刷新页面来完成了。经典的ASP通过AJAX更新数据

但是,我不知道我该怎么做,考虑我的asp代码是如何布局的。

我的示例代码:

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

,并要求我这样做是为了将其插入到表后:

<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 

因此,如何将我通过AJAX做更新,因为我有在html代码中?

感谢您的时间,

大卫

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

您是否在寻找基本的javascript解决方案,或者包括框架(如jQuery)在内的什么东西可以接受? – 2012-03-26 16:15:12

+0

@GuthMD:jQuery请:o) – StealthRT 2012-03-26 16:33:01

+0

好的,下一个问题。你在更新什么?你只是更新表中显示的值?或者用户有一些数据正在更新回服务器? AJAX应该完成什么? – 2012-03-26 17:02:09

回答

1

如果我正确理解你的问题,你正在做的是刷新页面,具体结果显示在表格中,通过按钮点击或通过一个setInterval JavaScript方法。当你在聊天中,你曾经提到:
假设你有你的结果与id属性resultPanel和数字的<div>或类似容器元素<table>,那么你可以使用以下命令:

$.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); 
} 

编辑4个表格进行更新,我更新了解决方案以提供特定于该场景的示例。

+0

嗯...会代表rowX(X)数字桌子? – StealthRT 2012-03-26 17:34:54

+0

所做的只是在异步GET请求中再次获取页面,然后用刷新的页面替换现有的表格标记。您是否需要更改行或以任何其他方式修改*哪些*结果显示在页面上? – 2012-03-26 17:42:47

+0

那么你是说代码只是在HTML中注入完整的表格结构?因此,resultPage.asp页面只有代码才能获得SP以及表格的HTML?然后,jquery将它所“获取”的所有html表数据放置到找到标记的主页面中? – StealthRT 2012-03-26 17:45:03