您的位置:首页精文荟萃软件资讯 → ASP中查错之实例(尤其对初学者有帮助)!赖皮,昨天的错误原因找到了,不是你所说的,你不应该吃晚饭的...

ASP中查错之实例(尤其对初学者有帮助)!赖皮,昨天的错误原因找到了,不是你所说的,你不应该吃晚饭的...

时间:2004/10/7 19:15:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            ASP中查错之实例
有这样一个程序,是对Application集合中的元素进行活动的添加与删除,程序如下:
<%@ LANGUAGE=VBSCRIPT %>


The Application Object



The ASP Application Object



<% 'look for a command sent from the FORM section buttons
If Len(Request.Form("cmdAdd")) Then                            ' 利用是否长度为0来判断
   strVarName = Request.Form("txtVarName")
   strVarValue = Request.Form("txtVarValue")
   Application.Lock
   Application(strVarName) = strVarValue                        ' 此处报错
   Application.Unlock
End If
If Len(Request.Form("cmdRemoveThis")) Then
   strToRemove = Request.Form("lstRemove")
   Application.Lock
   Application.Contents.Remove(strToRemove)
   Application.Unlock
End If
If Len(Request.Form("cmdRemoveAll")) Then
   Application.Lock
   Application.Contents.RemoveAll
   Application.Unlock
End If
%>

The Application.Contents Collection

<%
For Each objItem in Application.Contents
   If IsObject(Application.Contents(objItem)) Then
      Response.Write "Object reference: '" & objItem & "'
"
   ElseIf IsArray(Application.Contents(objItem)) Then
      Response.Write "Array: '" & objItem & "' contents are:
"
      varArray = Application.Contents(objItem)
      'note: the following only works with a one-dimensional array
      For intLoop = 0 To UBound(varArray)
         Response.Write "  Index(" & intLoop & ") = " & varArray(intLoop) & "
"
      Next
   Else
      Response.Write "Variable: '" & objItem & "' = " _
                     & Application.Contents(objItem) & "
"
   End If
Next
%>

The Application.StaticObjects Collection

<%
For Each objItem in Application.StaticObjects
   If IsObject(Application.StaticObjects(objItem)) Then
      Response.Write " element: ID='" & objItem & "'
"
   End if
Next
%>


" METHOD="POST">    ' 利用Request.ServerVariables("SCRIPT_NAME")将表单提交给自身

Add a value to the Application Object


  Application("

") = "

"



Remove a value from the Application Object


  Application.Contents.Remove("
")


  Application.Contents.RemoveAll



Other Application Methods

Application.Lock

Application.Unlock





©1999 Wrox Press -
Professional ASP 3.0 (ISBN: 1-861002-61-0)




该程序的报错信息如下:
技术信息(适用于支持人员)
·    错误类型:
应用程序对象, ASP 0102 (0x80004005)
函数需要字符串输入。
/Chapter03/application/show_application.asp, 第 22 行
·    浏览器类型:
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; COM+ 1.0.2204)
·    页:
POST 98 bytes to /Chapter03/application/show_application.asp
·    POST 数据:
cmdAdd=%A0%A0%
·    A0&txtVarName=My_New_Value&txtVarValue=Testing%2C+testing+...&lstRemove=My_New_Value
·    时间:
2001年2月16日, 9:42:28
赖皮曾指出Application(strVarName) = strVarValue应为Application("strVarName") = strVarValue,虽然这样做可以通过,但于程序的原意不符,程序要做的是通过Request.Form集合来获取。而且既然是wrox的例题,应该不太会出什么问题。
    步骤1:在报错的上一行加入Response.Write("AAA"),目的是检验If … Then语句是否起作用,结果发现If … Then语句起作用的。
    步骤2:将出错的一句注释掉,并将Response.Write("AAA")改为
        Response.Write "strVarName = " & strVarName & "
"
        Response.Write "strVarValue = " & strVarValue
    结果为:strVarName =
strVarValue = Testing, testing ...
    为什么会strVarName没有值,而strVarValue却有值呢?同样都是Text输入框,却会有不同的结果。反复观察后,发现Submit的值为"    ",即为三个空格,是否会由空格引起的呢?
    步骤3:遍历Request.Form集合,将两句Response.Write跟踪变量语句改为
    For Each strName in Request.Form
        Response.Write strName & " = " & Request.Form(strName) & "
"
    Next
    结果为:
    cmdAdd = 牋?txtVarName=My_New_Value
txtVarValue = Testing, testing ...
lstRemove = My_New_Value
果然是由于空格造成的乱码,可这源程序是例题,不应该有错呀。想到wrox用的是英文Windows 2000,我用的是中文,那么应该是由双字节的关系,就应该修改CODEPAGE。
而我忘记了中文CODEPAGE的代码,在ASP 3.0高级编程中,曾写过日文的CODEPAGE为932,日文也应该是双字节的。所以将源程序的第一行改为:
<%@ LANGUAGE="VBSCRIPT" CODEPAGE="932" %>
程序通过!

这里想向初学者提出的是,注意Response.Write和For … Each遍历来跟踪变量,找出错误的原因,注意双字节对程序的影响,还有本文中If … Then中的判断条件的方法。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本