如何从vb代码立即调用javascript函数

时间:2015-04-15 01:57:07

标签: javascript asp.net vb.net visual-studio-2008

这是我的sciprt,它会显示一个消息框,其中包含' Ok'和'取消'按钮

<script type="text/javascript"> function Confirm() { 
    var confirm_value = document.createElement('INPUT'); 
    confirm_value.type = 'hidden'; 
    confirm_value.name = 'confirm_value'; 
    if (confirm('Continue?')) { 
    confirm_value.value = 'Yes'; 
    } else { 
       confirm_value.value = 'No';} 
    document.forms[0].appendChild(confirm_value);} </script>

在我的程序中我运行查询,如果没有结果,那么我显示这个&#34;对话框&#34;框

我想在获取查询结果后立即调用该函数,但我的当前代码似乎是在所有内容之后运行它而不是立即执行。

If reader.read = false then
    If Not Page.ClientScript.IsStartupScriptRegistered(Me.GetType(), "alertscript") Then
        Page.ClientScript.RegisterStartupScript(Me.GetType(), "alertscript", "Confirm();", True)
    End if

    Dim confirmValue As String = Request.Form("confirm_value")
    If confirmValue = "Yes" Then
        'Do stuff here
    End if
End if

1 个答案:

答案 0 :(得分:2)

对我来说,这个要求通常代表了对正在发生的事情的误解。当您的VB.Net代码运行时,javascript 不存在。所有服务器事件处理程序都会生成完整回发。这意味着从头开始重新创建整个页面。这里的VB.Net代码是生成全新HTML文档的过程的一部分。这将涉及整个页面生命周期,包括您的服务器的Page_Load代码。引发事件时,已在浏览器中呈现的任何html 已销毁,以便为您对全新HTTP请求的响应让路。

如果您希望以不同的方式做出响应,则需要在构建整个HTTP响应时考虑到这一点。这意味着要么从一开始就改变事件的引发方式(调用WebMethod或其他ajax请求),要么设置你的响应以在javascript页面加载事件中调用你的confirm方法。