【问题标题】:How do I call a javascript function immediately from the vb code如何立即从 vb 代码调用 javascript 函数
【发布时间】:2015-06-20 19:52:48
【问题描述】:

这是我的脚本,它显示一个带有“确定”和“取消”按钮的消息框

<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>

在我的程序中,我正在运行查询,如果没有结果,则显示此“对话框”框

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

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

【问题讨论】:

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


    【解决方案1】:

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

    如果您希望它以不同的方式响应,则需要在构建整个 HTTP 响应时牢记这一点。这意味着要么从一开始就更改事件的引发方式(调用 WebMethod 或其他 ajax 请求),要么将您的响应设置为在 javascript 页面加载事件中调用您的确认方法。

    【讨论】:

    • 这似乎是 Web 窗体和 VB .Net 世界中常见的基本误解。
    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 2012-06-14
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多