带有 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 2013 无法在 cshtml 中调试 javascript
[译]如何在visual studio中调试Javascript