JavaScript在本地运行,但在部署到Web服务器时则不行

时间:2013-01-02 16:44:45

标签: c# javascript jquery html model-view-controller

我正在为网站部署一些代码,当我这样做时,JavaScript无法运行。我收到错误:

  

SCRIPT5007:属性'$'的值为null或undefined,而不是Function对象。

它正在使用的代码是

@model MVCMasterDetail.DataAccess.cwwoLoadCurrentWorkOrderActualsResult[]

<script type="text/javascript">
  $(document).ready(function () {
    $(".grid-toggle").click(function () {
        $(this).closest("table").find("tbody").show();
    });
    $(".hide-rows").click(function () {
        $(this).closest("table").find("tbody").hide();
    });
});
</script>

@Html.Partial("MasterDetailMasterPartial")

使用它的是:

<td colspan="4"> Details<br/><a href="javascript: void(0)" class="grid-toggle">Show-     </a><a href="javascript: void(0)" class="hide-rows">Hide</a></td>

感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

根据您在Ashley Ross的回答中的评论,看起来您尝试使用相对路径添加jQuery。它看起来像你正在使用MVC。在MVC中,您希望在html中引用文件的方式是:

<script src="@Url.Content("~/Scripts/jquery-1.7.1.js")"></script>

此外,脚本标记是否包含在head标记中也无关紧要。它唯一的区别是加载。通过将它放在head标签中,你告诉浏览器在开始加载主体之前下载js文件,这可能很好,但也会增加页面加载时间。为了更快地下载页面,您实际上希望将脚本标记放在body标记的底部,这会延迟下载js文件,直到页面的其余部分加载完毕为止。这会导致页面加载时间加快,但如果您没有预料到,可能会导致一些时髦的行为。

答案 1 :(得分:1)

您需要在任何其他脚本之前包含jQuery。听起来你有像

这样的东西
<script type="text/javascript" src="customScriptThatUsesjQuery.js"></script>
<script type="text/javascript" src="jquery-x.y.z.min.js"></script>

而不是

<script type="text/javascript" src="jquery-x.y.z.min.js"></script>
<script type="text/javascript" src="customScriptThatUsesjQuery.js"></script>

在使用它的任何其他脚本之前检查它是否出现在HTML源代码中。

答案 2 :(得分:0)

你必须在<head>

中添加对jquery lib的引用
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>