【问题标题】:JavaScript works locally but not when deployed to webserverJavaScript 在本地工作,但在部署到网络服务器时不工作
【发布时间】:2013-01-02 16:44:44
【问题描述】:

我正在向网站部署一些代码,但当我这样做时,JavaScript 没有运行。我得到错误:

SCRIPT5007:属性“$”的值为 null 或未定义,不是 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>

感谢任何帮助。

【问题讨论】:

  • 我想你忘了添加要领...
  • 听起来你没有正确包含 jQuery。
  • 使用 firebug 仔细检查你的请求,也许你没有加载 jQuery 库
  • 您在文档中是否引用了 jQuery
  • 您的代码没有进入问题,但是我们实际上不需要查看 javascript,只需要查看 &lt;script src=&gt; 即可。

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


【解决方案1】:

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

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

另外,你的脚本标签是否进入头标签也没有关系。它唯一的区别是加载。通过将它放在 head 标签中,您是在告诉浏览器在开始加载正文之前下载 js 文件,这可能很好,但也会增加页面加载时间。为了更快的页面下载,您实际上希望将脚本标签放在正文标签的底部,这会将 js 文件的下载推迟到页面的其余部分加载之后。这会加快页面加载时间,但如果您没有预料到,可能会导致一些奇怪的行为。

【讨论】:

    【解决方案2】:

    您需要在任何其他脚本之前包含 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 源代码中。

    【讨论】:

    • 我把它改成了: $(document).ready(function () { $(".grid-toggle").click(function () { $(this).closest("table").find( "tbody").show(); }); $(".hide-rows").click(function () { $(this).closest("table").find("tbody").hide() ; }); }); 仍然有同样的错误。这是在头脑中
    • 啊,我明白了。确保../../Scripts/jquery-1.7.1.js 是您网络服务器上的有效路径。您可以使用 Firefox 的 Firebug 或 Chrome 的开发者工具来检查页面的资源是否被正确加载。
    • 做到了,我只是将源更改为网络服务器上的特定文件。谢谢!
    【解决方案3】:

    你必须在&lt;head&gt;中添加对jquery lib的引用

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
    
    猜你喜欢
    • 2023-02-09
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    相关资源
    最近更新 更多