Javascript 为什么期望值只在我以调试模式运行代码时出现,而在我不';t调试,我如何修复此问题?

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> 现在是

下面的代码让我头痛不已,不知道是否有人能帮我

我有一个名为Details.aspx的视图,位于名为project的文件夹中。在details视图中,我有以下关键代码片段,这让我头疼

<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");
    }