xmlhttp远程异步调数据一例(含中文乱码解决方法)

利用xmlhttp远程异步调用数据的方式真的能使web程序可以完全模拟c/s程序的特点。大大提高了web程序的 实现效果。尤其是以xmlhttp技术为核心的 ajax ,将是web程序的一次飞跃。本文将讨论一个刚刚用到的一个实例。

程序的功能是 在 录入及面有一个文本框 ,我们输入一个设备编码,然后双击 就会将该设备的详细信息显示出来。

程序分两个部分:客户端  和  服务器

 

一、客户端

<SCRIPT language="VBScript">
'利用AJAX技术异步从数据库取数据
dim oReq
set oReq = CreateObject("MSXML2.XMLHTTP")     '创建MSXML2.XMLHTTP对象

sub callDetail(a_code)
    '打开请求
 oReq.open "get","assets_pc_query_detail.asp?assets_code=" & a_code,true
    '设置请求头,
 oReq.setRequestHeader "Content-Length",Len(strA)
 oReq.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
    '调用javascript函数以定义 onreadystatechange 事件触发 操作
 setEvent
    '发送请求
 oReq.send()
   'msgbox bytes2BSTR(oReq.responseBody)
end sub

'这个函数没用上,它是用来包装请求信息的
Function URLEncoding(vstrIn)
  strReturn = ""
  For i = 1 To Len(vstrIn)
    ThisChr = Mid(vStrIn,i,1)
    If Abs(Asc(ThisChr)) < &HFF Then
      strReturn = strReturn & ThisChr
    Else
      innerCode = Asc(ThisChr)
      If innerCode < 0 Then
        innerCode = innerCode + &H10000
      End If
      Hight8 = (innerCode And &HFF00)/ &HFF
      Low8 = innerCode And &HFF
      strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
    End If
  Next
  URLEncoding = strReturn
End Function

'非常重要,对服务器的响应信息进行处理,否则汉字乱码
Function bytes2BSTR(vIn)
  strReturn = ""
  For i = 1 To LenB(vIn)
    ThisCharCode = AscB(MidB(vIn,i,1))
    If ThisCharCode < &H80 Then
      strReturn = strReturn & Chr(ThisCharCode)
    Else
      NextCharCode = AscB(MidB(vIn,i+1,1))
      strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
      i = i + 1
    End If
  Next
  bytes2BSTR = strReturn
End Function

</script>

<script language="javascript">
    //此函数定义当获得相应信息后将做什么操作
     // 将得到的信息 放到一个 span 中,并呈现给用户
    function setEvent()
    {
       oReq.onreadystatechange=function(){
          if(oReq.readystate==4)
             {
                if(oReq.status==200)
                {
                   assets_detail.innerHTML= bytes2BSTR(oReq.responseBody);
                   assets_detail.style.left=200;
                   assets_detail.style.top=100;
                   assets_detail.style.visibility='visible';
                }
             }
       }
    }
   
</script>
<input οndblclick="callDetail(this.value)" οnchange="anyChange();" style='width:95%' type="text" maxlength="50"  name="assets_code" value="" ID="Text1">
<span id="assets_detail" οnclick="this.style.visibility='hidden';" style="background-color:#e0e0e0;visibility:hidden;position:absolute;top:100;left:100"></span>   

二、服务器

assets_pc_query_detail.asp

<%Response.Expires = -1%>
<!--#include file="../inc/conn2.asp"-->
<!--#include file="../inc/config.asp"-->
<%
'计算机设备查询详细(车间级)
'writer:northsnow
'create date  :060614
%>
<%     
    assets_code=trim(request("assets_code"))
    if assets_code="" then response.Write "nononono"
%> 
     <%
            '读取数据
      set rs=server.CreateObject("adodb.recordset")
      rs.CursorLocation=3
      Call OpenConn()
      set rs=server.CreateObject("adodb.recordset")
      rs.open "select * from assets_pc_detail_v  where assets_code='" & assets_code & "'",conn,3,1
     if not (rs.eof and rs.bof) then
     %>
             设备编码:<%=FilterParam3(rs("assets_code"))%> <br>
                               设备名称:<%=FilterParam3(rs("assets_name"))%> <br>
                               设备型号:<%=FilterParam3(rs("assets_spec"))%> <br>
             购买日期:<%=FilterParam3(rs("purchase_date"))%> <br>
                               cpu:<%=FilterParam3(rs("cpu_brand"))%>&nbsp;<%=FilterParam3(rs("assets_cpu"))%> <br>
                               内存:<%=FilterParam3(rs("assets_ram"))%> <br>
                               硬盘:<%=FilterParam3(rs("assets_hd"))%> <br>
             品牌:<%=FilterParam3(rs("assets_brand"))%> <br>
                               IP:<%=FilterParam3(rs("assets_ip"))%> <br>
                               技术状态:<%=FilterParam3(rs("tech_status"))%>
    <% end if
    Rs.Close()
    set rs=nothing
    CALL CLOSECONN()%>
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值