直播中
好,下面就讓我們來(lái)討論一下如何實(shí)現(xiàn)這個(gè)頁(yè)面吧!
getData.asp頁(yè)面首先使用一個(gè)DOMDocument對(duì)象來(lái)保存客戶端發(fā)送的數(shù)據(jù):
'創(chuàng)建DOMDocument對(duì)象
Set xml = Server.CreateObject ("msxml2.DOMDocument")
xml.async = False
然后,它裝載POST數(shù)據(jù)
'裝載POST數(shù)據(jù)
xml.Load Request
If xml.parseError.errorCode <> 0 Then
Call responseError ("不能裝載XML信息。" & "Description: " & xml.parseError.reason & "<br>Line: " & xml.parseError.Line)
End If
它能夠返回commandtext元素值和returndata或returnvalue元素值。下面我只給出返回commandtext元素值的代碼,其余代碼請(qǐng)參看我下面所附的源程序。
Set N = xml.selectSingleNode("command/commandtext")
If N Is Nothing Then
Call responseError ("缺少 <sp_name> 參數(shù)。")
Else sp_name = N.Text
End If
接著,應(yīng)該讓頁(yè)面創(chuàng)建一個(gè)Command對(duì)象,讀入所有<param>元素,并且為request中的每一個(gè)元素創(chuàng)建一個(gè)參數(shù)。最后,讓頁(yè)面打開一個(gè)連接使用存儲(chǔ)過(guò)程adExecuteNoRecords選項(xiàng)來(lái)執(zhí)行request。
set conn = Server.CreateObject("ADODB.Connection")
conn.Mode=adModeReadWrite
conn.open Application("ConnectionString")
set cm.ActiveConnection=conn
' 返回?cái)?shù)據(jù)
if not returnsData then
cm.Execute
else
set R = server.CreateObject("ADODB.Recordset")
R.CursorLocation = adUseClient
R.Open cm, ,adOpenStatic, adLockReadOnly
end if
如果能夠返回?cái)?shù)據(jù)的話,那么returnData變量就為真值,并且把結(jié)果數(shù)據(jù)集返回到客戶端,仍然是一個(gè)XML文檔。
if returnsData then
R.Save Response, adPersistXML
if err.number <> 0 then
call responseError ("數(shù)據(jù)集發(fā)生存儲(chǔ)錯(cuò)誤" & "在命令'" & CommandText & "': " & Err.Description)
Response.end
end if
如果輸出參數(shù)返回值,那么這個(gè)頁(yè)面將返回一個(gè)包含這些值的XML字符串。文檔的根元素是一個(gè)<values>標(biāo)記,每一個(gè)返回值都有其相應(yīng)的子元素,如果發(fā)生任何錯(cuò)誤,頁(yè)面都會(huì)格式化并返回一個(gè)包含錯(cuò)誤信息的XML字符串:
Sub responseError(sDescription)
Response.Write "<response><data>錯(cuò)誤: " & sDescription & "</data></response>"
Response.end
End Sub