跟踪事件
当一个ASP页使用脚本对象模型时,单独脚本对象触发事件对状态改变(如Recordset1_ondatasetcomplete)或用户行为(如Button1_onclick)进行反应。通常,你需要知道你自己的脚本及由脚本对象模型触发的事件在什么时候执行。
为此,通过把@trace 或 @trace事件选项设置为true来打开事件跟踪。如果你使事件跟踪有效,当事件发生时,事件信息就被写到ASP页中。例如,ASP页的一部分可能像下面这个样子:
EVENT TRACE: thisPage fired oninit event.
EVENT TRACE: Recordset1 fired ombeforeopen event.
EVENT TRACE: Recordset1 fired onrowenter event.
EVENT TRACE: Recordset1 fired ondatasetchanged event.
EVENT TRACE: Recordset1 fired ondatasetcomplete event.
(etc)
为了确定你的脚本什么时候执行,在重要点包含Response.Write语句,如下面脚本所示。这个例子为一个recordset设置了一个参数,这个recordset是建立在一个文本框中的信息的基础之上的。每个步骤都通过在页面上显示来报告。
Sub btnQuery_onclick()
Recordset1.close()
Response.Write("Finished closing recordset.")
Recordset1.setParameter 1, txtLastName.value
Response.Write("Finished resetting query parameter.")
Recordset1.open()
Response.Write("Finished reopening recordset.")
End Sub
通过使用Jscript条件编译命令,你可以指定Response.Write语句只有在你设置调试选项的情况下才出现在页面中。例如,在下面的代码块中,Response.Write语句只有在@trace选项设置为true时才被执行:
@if (@trace)
Response.Write("Ready to set SQL statement parameters.");
@end
你不一定只限于使用调试选项--你也可以创建你自己的条件标记,如下面例子所示:
@set @trace_custom = true
' ... other script here
@if (@trace_custom)
Response.Write("Ready to set SQL statement parameters.");
@end
注意 在把你的页面变成产品之前,一定要把所有的调试条件设置为false。 有关条件编译的更多信息,见微软脚本网站语句部分的@if 和 @set命令。网站地址是 http://msdn.microsoft.com/scripting/default.htm? /scripting/JScript/doc/Jstoc.htm.
跟踪警告
为了使脚本对象尽可能健壮,并且使显示在ASP页上的不必要信息最少,脚本对象通常不报告非致命错误。例如,如果你向脚本对象方法传递了一个无效值,并且这个值并没有使对象完全失败,这个对象常常是继续执行而没有错误消息。但是,当你开发应用程序时,你一般会想知道脚本对象是否已经发生了一个可能的错误。有时,不被报告的错误以后在页面执行期间可能会产生不同的问题,使调试页面更加困难。
解决办法是,通过将@trace 或 @trace警告选项设置为true来跟踪警告。如果一个脚本对象遇到了一个可能的问题,那么它将按如下的格式向页面书写信息:
WARNING TRACE:
FILE: recordset.asp
FUNCTION: Recordset1.open()
DESCRIPTION: Recordset is already open.
……