如何编写"调试消息"到旧的网站上的控制台或其他方面?

时间:2017-03-01 18:13:03

标签: javascript asp.net vb.net internet-explorer-11 console.log

我在使用VBScript的旧网站中添加了一些功能("旧"如#34; olde&#34 ;;如在Rip-van-Winkle olde中)。

我的问题的结果是某些逻辑似乎总是等同于单个结果(IsNewBusiness总是显然被赋予了FALSE的值),而它有时应该等同于相反的逻辑:

IsNewBusiness = TRUE 'default (if record not found)
If Not adoRS.EOF Then
    IsNewBusiness = adoRS.Fields.Item(0).Value <> 0
End If

所以,既然逻辑总是等于假,我必须假设这一行:

IsNewBusiness = adoRS.Fields.Item(0).Value <> 0

...正在到达,并且adoRS.Fields.Item(0).Value始终为0

正如您在上面的代码中所看到的,IsNewBusiness布尔值设置为TRUE以开始,但永远不会保持为真,尽管在某些情况下它应该(重置)为TRUE(在给定某些参数的情况下,查询结果应该是返回值&#34; -1&#34;而不是0)。

这个问题与我问here的问题有关,但实际上是分开的:

所以,为了达到饼干的关键,我想通过写出一个&#34;调试消息&#34;来绝对确定上面显示的上面的if块是。到控制台或类似的东西。

基于此网站中的遗留代码,我尝试与javascript合作以达到这些目的:

ReturnMsg = "Made it to IsNewBusiness logic"
Response.Write("<script type=""text/javascript"">" & vbCrLf)
Response.Write("alert ('" & ReturnMsg & "');" & vbCrLf)
Response.Write("</script>" & vbCrLf)

......但它似乎没有用 - 我从来没有看到过这个消息。

我也试过这个:

Response.Write("window.alert(ReturnMsg);")

......而且这个:

Response.Write("console.log(ReturnMsg);")

......结果没有区别。我在控制台中看到的只有:

enter image description here

如何完成&#34;警报&#34;或控制台日志消息,或某些此类,使用VBScript,或javascript,或其他什么?

更新

我甚至尝试了一些内联javascript,如下所示:

adoRS.Close()

<script language="javascript">
window.alert("Made it past the IsNewBusiness logic");
</script>

......但它爆炸了......

更新2

我尝试过Kul-Tigin提到的技巧,但它似乎对我不起作用。

我改变了这段代码:

currentYear = Year(Now)
SQLString = "Select NewBiz from MasterUnitsprojSales where CYear = " & currentYear & " and Unit = '" & Unit & "'"
adoRS.Open(SQLString, adoCon)
IsNewBusiness = TRUE 'default (if record not found)
If Not adoRS.EOF Then
    IsNewBusiness = adoRS.Fields.Item(0).Value <> 0 'Is this ever reached?
End If
adoRS.Close()

......对此:

currentYear = Year(Now)
SQLString = "Select NewBiz from MasterUnitsprojSales where CYear = " & currentYear & " and Unit = '" & Unit & "'"
adoRS.Open(SQLString, adoCon)
IsNewBusiness = TRUE 'default (if record not found)
ReturnMsg = "Before the If Not adoRS.EOF block"
                Response.Write("<script type=""text/javascript"">" & vbCrLf)
                Response.Write("<!--" & vbCrLf)
                Response.Write("alert ('" & ReturnMsg & "');" & vbCrLf)
                Response.Write("-->" & vbCrLf)
                Response.Write("</script>" & vbCrLf)
If Not adoRS.EOF Then
    IsNewBusiness = adoRS.Fields.Item(0).Value <> 0 'Is this ever reached?
    ReturnMsg = "Entered the If Not adoRS.EOF block"
                Response.Write("<script type=""text/javascript"">" & vbCrLf)
                Response.Write("<!--" & vbCrLf)
                Response.Write("alert ('" & ReturnMsg & "');" & vbCrLf)
                Response.Write("-->" & vbCrLf)
                Response.Write("</script>" & vbCrLf)
End If
adoRS.Close()

...运行网站进入该页面,选择查看源,搜索&#34;如果不是adoRS.EOF块&#34;,则没有匹配。我做错了吗?

更新3

我也试过了(上面的内容基于页面中的现有代码,下面是基于评论者的代码段):

Response.Write("<!-- Before the If Not adoRS.EOF block -->")
If Not adoRS.EOF Then
    IsNewBusiness = adoRS.Fields.Item(0).Value <> 0 'Is this ever reached?
    Response.Write("<!-- After the If Not adoRS.EOF block -->")
End If

更新4

我能够获得我在View Source中显示的调试信息的唯一方法是插入一些引发错误的javascript。添加此javascript:

<script language="javascript">
    window.alert("Before the If Not adoRS.EOF block js");
</script>

在某些情况下:

Response.Write("<!-- Before the If Not adoRS.EOF block -->")
<script language="javascript">
    window.alert("Before the If Not adoRS.EOF block js");
</script>
If Not adoRS.EOF Then

...导致它出现在页面上:

Server Error in '/EMS/customerreportingnet' Application.
--------------------------------------------------------------------------------

Compilation Error 
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: BC30636: '>' expected.

Source Error:



Line 129:        IsNewBusiness = TRUE 'default (if record not found)
Line 130:        Response.Write("<!-- Before the If Not adoRS.EOF block -->")
Line 131:        <script language="javascript">
Line 132:            window.alert("Before the If Not adoRS.EOF block js");
Line 133:        </script>


Source File: C:\EnhancedMonthlySalesReporting\customerreportingnet\customerreportingnet\pages\custmaint_entry.aspx    Line: 131 

......这在观看源中:

Line 129:        IsNewBusiness = TRUE 'default (if record not found)
Line 130:        Response.Write(&quot;&lt;!-- Before the If Not adoRS.EOF block --&gt;&quot;)
<font color=red>Line 131:        &lt;script language=&quot;javascript&quot;&gt;
</font>Line 132:            window.alert(&quot;Before the If Not adoRS.EOF block js&quot;);
Line 133:        &lt;/script&gt;</pre></code>

......所以我似乎还在Leviathan出没的水域上游游泳。

1 个答案:

答案 0 :(得分:2)

让我们调试一下。必须是三件事之一:

  1. 代码已运行,并输入If,并将IsNewBusiness设置为true。
  2. 代码已运行,并输入If,并将IsNewBusiness设置为false。
  3. 代码已运行,且未输入If。因此,IsNewBusiness必须设置为true。
  4. 代码永远不会运行。 IsNewBusiness的价值未知。
  5. 一点点思考会让你相信这些案例是详尽无遗的:其中一个必须成为正在发生的事情。

    那么,你的工作就是弄清楚这四个案件中哪一个真正发生了。理想情况下,您可以使用调试器附加到站点(您是否已使用Visual Studio&#39;附加到进程&#34;选项?)并在代码中设置断点,只看到哪些断点被击中以及哪些断点被击中#39;吨

    但是,无论出于何种原因,我们都说您无法使用调试器。因此,如果是我,我会用Response.Write()Trace()调用来发出输出的代码,就像几位人士在评论中建议的那样,尽可能多地指出可能性。由于Response.Write()是一个关于代码是否运行(你要么看到它的输出还是你没有)的死亡赠品,这是一个不错的选择。案例1和案例2崩溃成一个案例(现在,您可能只关心计算机是否进入If,而不是计算机到达后的内部代码。

    所以我暂时注释这样的代码:

    IsNewBusiness = TRUE 'default (if record not found)
    If Not adoRS.EOF Then
        IsNewBusiness = adoRS.Fields.Item(0).Value <> 0
        Response.Write("<h1>INSIDE IF</h1>")
    Else
        Response.Write("<h1>INSIDE ELSE</h1>")
    End If
    

    (简而言之:在调试时,只要您以后清理突变,就可以安全地改变页面本身的内容以回答问题!)

    然后,您可以在加载页面时回答上述情况:

    • 如果你看到&#34; INSIDE IF&#34;在粗体文本中,您知道计算机进入If语句,adoRS.EOF必须为假。
    • 如果你看到&#34; INSIDE ELSE&#34;在粗体文字中,您知道计算机没有进入If语句,adoRS.EOF必须为真。
    • 如果您没有看到,则计算机根本没有达到此代码,您的问题出在其他地方。