带有 javascript 调试的 Visual Studio 在直接运行和在调试模式下运行时显示不同的行为

Posted

技术标签:

【中文标题】带有 javascript 调试的 Visual Studio 在直接运行和在调试模式下运行时显示不同的行为【英文标题】:visual studio with javascript debugging showing different behaviour while running directly and by running in debug mode 【发布时间】:2021-08-17 12:31:24 【问题描述】:

javascript Visual Studio 数据库编程中,我正在处理非常不寻常的程序执行行为。 我有这样的javascript代码:

<script type="text/javascript">
    function GetValue6(id1, id2, id3) 
            var user = ;
            user.Username = $("[id*='" + id1 + "']").val();
            user.Password = $("[id*='" + id2 + "']").val();
            alert(user.Username);
            $.ajax(
                type: "POST",
                url: '<%= ResolveUrl("Default.aspx/SaveUser") %>',
                data: 'user: ' + JSON.stringify(user) + '',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) 
                    alert("User has been added successfully.");
                    window.location.reload();
                ,
                error: function ()  alert("There was an error."); 
            );
            return false;
    
</script>

文件后面的代码如下:

child.Text = "<input type='text' id='" + TextGUID1 + "' value='" + rows[i] 
["Area"].ToString() + "'/> 
<input type='text' id='" + TextGUID2 + "' value='" + rows[i] 
["Area"].ToString() + "'/> 
<input type = 'button' id='" + ButtonGUID3 + "' onclick=\"GetValue6('" + 
TextGUID1 + "','" + TextGUID2 + "','" + ButtonGUID3 + "')\" value='Save' 
/> 

public static void SaveUser(User user)
    
        string constr = 
ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        
            using (SqlCommand cmd = new SqlCommand("INSERT INTO Users2 
VALUES(@Username, @Password)"))
            
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@Username", user.Username);
                cmd.Parameters.AddWithValue("@Password", user.Password);
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            
        
    

我面临一个非常奇怪的行为,当我通过单击“保存”按钮运行上述代码时,我遇到错误警报消息“发生错误。”。但是当我在调试模式下运行程序并按 F10(跳过新函数调用)时,我会收到警告消息“用户已成功添加”。并且用户在相应的表中插入。此外,一件奇怪的事情是,当 e 收到错误消息“出现错误。”时,即使这样,相应的用户也成功插入到表中。 请指导我哪里错了,如何让用户名插入正确的成功消息。

【问题讨论】:

【参考方案1】:

当您在 onclick 上运行脚本时,您也会回帖 - 在这里,尝试返回 false 以避免回帖 - 写这个

onclick=\"GetValue6(....); return false;\"

或者这个

onclick=\"return GetValue6(....);\"

因为在 GetValue6 内部你返回 false。

当您进行调试时,由于逐步调试,程序会等待/保留帖子 - 这就是它成功的原因。

【讨论】:

以上是关于带有 javascript 调试的 Visual Studio 在直接运行和在调试模式下运行时显示不同的行为的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2012 没有调试选项

Visual Stdio 无法直接启动带有“类库输出类型”的项目若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项目!

调试模式在 Visual Studio 2015 中不起作用

Visual Studio 断点仅适用于第二次调试尝试

Visual Studio 2015 更新 1 - 调试时没有 IIS Express 响应

运行调试器 Visual Studio 时 argv 中的 PATH