2013-01-02 108 views
0

我正在将一些代码部署到网站,而当我这样做时,JavaScript无法运行。我得到的错误:JavaScript在本地工作,但部署到网络服务器时不工作

SCRIPT5007: The value of the property '$' is null or undefined, not a Function object.

它使用的代码是

@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> 

任何帮助表示赞赏。

+0

我想你已经忘了添加要领... – rene

+0

听起来像你没有正确包括jQuery。 –

+0

使用萤火虫仔细检查您的请求,也许您没有加载jQuery库 – fcalderan

回答

1

您需要的任何其他脚本之前,包括jQuery的添加引用到的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源代码中使用的任何其他脚本之前。

+0

我已将其更改为: < script type =“text/javascript”src =“../../ Scripts/jquery-1.7.1.js”> 仍然有相同的错误。这是在头上 –

+0

啊,我明白了。确保'../../ Scripts/jquery-1.7.1.js'是您的网络服务器上的有效路径。您可以使用Firefox的Firebug或Chrome的开发工具来检查页面资源是否正确加载。 –

+0

这样做,我只是将源代码更改为Web服务器上的特定文件。谢谢! –

0

你必须在<head>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script> 
+1

或最后 - http://developer.yahoo.com/blogs/ydn/posts/2007/07/high_performanc_5/ – StingyJack

+0

它已包含在_Layout.cshtml中 –

2

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

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

另外,如果你的脚本标签云头标记与否并不重要。它唯一的区别是加载。通过将它放在head标签中,您告诉浏览器在开始加载body之前下载js文件,这可能很不错,但也会增加页面加载时间。为了更快的页面下载,您实际上希望将脚本标签放在body标签的底部,这会推迟下载js文件,直到页面的其余部分加载完毕。这会导致更快的页面加载时间,但如果您不期待它会导致一些奇怪的行为。

相关问题