Javascript 为什么期望值只在我以调试模式运行代码时出现,而在我不';t调试,我如何修复此问题?
下面的代码让我头痛不已,不知道是否有人能帮我 我有一个名为Details.aspx的视图,位于名为project的文件夹中。在details视图中,我有以下关键代码片段,这让我头疼Javascript 为什么期望值只在我以调试模式运行代码时出现,而在我不';t调试,我如何修复此问题?,javascript,jquery,asp.net-mvc-2,Javascript,Jquery,Asp.net Mvc 2,下面的代码让我头痛不已,不知道是否有人能帮我 我有一个名为Details.aspx的视图,位于名为project的文件夹中。在details视图中,我有以下关键代码片段,这让我头疼 <script type="text/javascript"> var Global_ProjectID = <%:Model.ProjectID%>; //Gets the project ID from Project Table In model </script> 现在是
<script type="text/javascript">
var Global_ProjectID = <%:Model.ProjectID%>; //Gets the project ID from Project Table In model
</script>
现在是奇怪的部分
我的所有字段(如title、reportedby等)都会按应有的方式填充,也就是说,它实际上包含了我希望它包含的值—我在表单中填充的数据。ProjectID总是碰巧为null,而实际上它应该包含一个整数值
当我在浏览器中激活javascript上的调试器时,我看到ProjectID确实被填充,并且在事件中我添加了以下代码Alert(Global_ProjectID)代码>,它还提供了一个带有所需值的弹出窗口
然而,当我在没有调试的情况下运行这些代码段时,projectd总是空的。遗憾的是,我必须反复使用这个值,而null根本不行
我可以做什么来修复此代码?我让其他程序员看了一下,他们也和我一样感到困惑。我建议研究一下-JS在变量和函数初始化顺序方面并不总是按照您期望的方式进行
您可以通过调整IssueSubmitForm
函数以接受ProjectID
作为参数,并在提交按钮上使用onclick=“return IssueSubmitForm(Global_ProjectID)”
来解决此问题
或者更好的方法是,在页面加载到$(document).ready()
事件中之后,删除内联函数调用并绑定提交事件。我建议研究一下-JS在变量和函数初始化顺序方面并不总是按照您期望的方式进行
您可以通过调整IssueSubmitForm
函数以接受ProjectID
作为参数,并在提交按钮上使用onclick=“return IssueSubmitForm(Global_ProjectID)”
来解决此问题
甚至更好的方法是,在页面加载到$(document).ready()事件中之后,删除内联函数调用并绑定提交事件。现在尝试了一百万次。如果我从表单标记中删除该操作,它将不会执行控制器方法,并返回我所在的页面。如果我在$.post之前离开警报,它将显示我一直需要的值。当我将值保存到数据库时,它会随机决定该值何时出现或为空(出于某些奇怪的原因),然后再次出现另一个风滚草。我可以抽烟了:现在尝试了一百万种东西。如果我从表单标记中删除该操作,它将不会执行控制器方法,并返回我所在的页面。如果我在$.post之前离开警报,它将显示我一直需要的值。当我将值保存到数据库时,它会随机决定该值何时出现或为空(出于某些奇怪的原因),然后再次出现另一个风滚草。我可以抽:对不起,这么久才给你回复。结果是,有一些javascript导致了一些糟糕的结果。我只是忘了查看stackoverflow的答案。据我记忆所及,我做的和你建议的差不多。谢谢你花了这么长时间才回复你。结果是,有一些javascript导致了一些糟糕的结果。我只是忘了查看stackoverflow的答案。据我记忆所及,我做的和你建议的差不多。谢谢
<p>
<input type="submit" class="submit small" value="Add Issue" onclick="return IssueSubmitForm()"/>
or <a href="">cancel</a></p>
<script type="text/javascript">
var PostBackUrl = "<%:ResolveUrl("~/Issue/AddIssue")%>";
//Front-end Validation here
function IssueSubmitForm() {
var PostBackData = {
Title: $("input[name=Title]").val(),
Details: $("textarea[name=Details]").val(),
ReportedBy: $("input[name=ReportedBy]").val(),
Priority: $("select[name=Priority]").val(),
ProjectID: Global_ProjectID
};
$.post(PostBackUrl,PostBackData);
}
</script>
[HttpPost]
public ActionResult AddIssue(Models.Issue issue)
{
Models.Issue newIssue = new Models.Issue()
{
Title = issue.Title,
DateLogged = DateTime.Now,
Status = 0,
ReportedBy = issue.ReportedBy,
Priority = issue.Priority,
ProjectID = issue.ProjectID,
};
return View("SomeOtherViewSomewhere");
}