【问题标题】:jQuery getScript failingjQuery getScript 失败
【发布时间】:2015-04-28 16:58:35
【问题描述】:

所以我有三个文件。

html 有:

<script type="text/javascript" src="~/Scripts/custom-notebook.js"></script>

custom-notebook.js 行给出 404 not found:

$.getScript('Scripts/custom-notebook-services.js'); //this gives 404

1. custom-notebook-services.js 存在。它曾经可以工作,但我更改了 html 路径以包含 ~/,因为我有一个虚拟应用程序(是 MVC C#)..

2. 现在我所做的一切都不起作用(是的,也到处搜索)。

  • 我试过$.getScript('../Scripts/custom-notebook-services.js');

  • $.getScript('../../Scripts/custom-notebook-services.js');

  • $.getScript('/Scripts/custom-notebook-services.js');

运气不好:

总是给我一个带有路径的 404

domain.com/Controller/Scripts/custom-notebook-services.js

...而不是正确的路径:

domain.com/Scripts/custom-notebook-services.js

【问题讨论】:

  • 尝试在其他链接中使用~。看看结果如何
  • wierd 显示 404:domain.com/Controller/~/Scripts/custom-notebook-script.js .
  • 试试<script src="@Url.Content("~/Scripts/custom-notebook-script.js")"></script>
  • 那么~ 在那里不起作用
  • 啊。打扰一下。我明白你在说什么。将路径留在html中并抓住它。问题不在于我做什么,它在 url 中包含 Controller……除非我调用整个域,这会起作用。

标签: c# jquery


【解决方案1】:

从 Razor 助手获取路径到脚本的一种方法是通过数据属性。

<body data-script-dir="@Url.Content("~/Scripts")">

现在在你的 javascript 中提取它,但你需要延迟你的脚本直到 DOM 加载。

$(function() {
    var scriptDir = $("body").attr("data-script-dir");   //  "/Scripts"
});

然后您可以将路径的其余部分附加到该字符串。

【讨论】:

  • 我赞成 Jasen,这可能很接近......您可能需要使用上述方法将完整的域 url 连接到 data-script-dir 并使用 stackoverflow.com/a/21226409/3023642 构建路径。出于我的目的,我使用了一种解决方法。这是一个非常奇怪的问题! jQuery 似乎不能很好地处理 MVC 虚拟目录。
【解决方案2】:

您是否在 IIS 上正确配置了虚拟目录? 在您拥有包含此&lt;script type="text/javascript" src="/Scripts/custom-notebook.js"&gt;&lt;/script&gt; 的页面的同一目录上,您应该在该页面的同一目录上拥有一个指向“脚本”的虚拟目录。

【讨论】:

  • 对,所以你说的Scriptdir应该在虚拟目录root是吗?这就是我正在做的事情。
猜你喜欢
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多