jQuery 在 URL 中使用奇数个“/值”

jQuery Acting up with an odd number of "/values" in the URL

从 VS2010 将 MVC3 站点发布到服务器后,一些 jQuery 功能在我身上退出,具体取决于 URL。

Hamsandwhich.ABC.123/Whiteboard/Home/index - 不起作用 Hamsandwhich.ABC.123/Whiteboard/Activities/Edit/11 - 作品

现在,如果我转到 URL 并在 URL 的末尾添加一个额外的斜杠,结果就会翻转。

Hamsandwhich.ABC.123/Whiteboard/Home/index/ - 有效 Hamsandwhich.ABC.123/Whiteboard/Activities/Edit/11/ - 不起作用

我想出的临时解决方法是向不工作的页面发送未使用的值。

Hamsandwhich.ABC.123/Whiteboard/Home/index/9001 - 作品

我只想知道为什么会发生这种情况,以及是否有一种方法可以解决此问题而无需向每个页面发送一个值。

    <link href="@Url.Content(" ~/Content/bootstrap.min.css ")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content(" ~/Content/site.css ")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content(" ~/Content/bootstrap-responsive.min.css ")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content(" ~/Content/themes/base/jquery-ui.css ")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content(" ~/Content/datepicker.css ")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content(" ~/Content/datepicker3.css ")" rel="stylesheet" type="text/css" />

... 
.... 
...

    <script src="@Url.Content(" ../../Scripts/jquery-2.1.1.js ")" type="text/javascript"></script>
    <script src="@Url.Content(" ../../Scripts/jquery-ui-1.11.2.js ")" type="text/javascript"></script>
    <script src="@Url.Content(" ~/Scripts/bootstrap.min.js ")" type="text/javascript"></script>
    <script src="@Url.Content(" ~/Scripts/site.js ")" type="text/javascript"></script>
    <script src="@Url.Content(" ../../Scripts/bootstrap-datepicker.js ")" type="text/javascript"></script>
    <script src="@Url.Content(" ../../Scripts/modernizr-2.8.3.js ")" type="text/javascript"></script>
    <script type="text/javascript">
      $(document).ready(function() {
        $("#datepicker").datepicker({
          format: 'mm/dd/yyyy'
        });
        $("#datepicker2").datepicker({
          format: 'mm/dd/yyyy'
        });
        $("#datepicker3").datepicker({
          format: 'mm/dd/yyyy'
        });
      });
    </script>

您需要将所有看起来像这样的链接 - ../../Scripts/jquery-2.1.1.js 更改为像大多数其他地方一样使用 tilda(“~”)语法 - ~/Scripts/jquery-2.1.1.js。 tilda 语法呈现从应用程序根目录到该文件的路径。

当您这样引用时 - " ../../Scripts/jquery-2.1.1.js " - 您是在告诉浏览器该文件比您所在的当前目录高 2 个目录。如果您是三个 "directories" 深度,那么该路径将是不正确的。这就是为什么额外的斜杠有时会破坏或解决您的问题。

在引用脚本文件的方式上保持一致。在你的包含中,你大部分时间都在做对。

最后一点,在你的一些参考文献中,你的双引号和文件路径之间有很多白色space。清理掉白色的 space,因为它看起来更干净,可以防止以后出现任何奇怪的问题。