【问题标题】:asp.net mvc3 website on IIS 7.5 website not loading jqueryIIS 7.5网站上的asp.net mvc3网站未加载jquery
【发布时间】:2012-02-22 14:14:01
【问题描述】:

在 jQuery 上遇到一些部署要点的新手:

使用 VS2010 附带的默认 asp.net mvc3 模板,我尝试包含 jquery ui 可选小部件。在_Layout.cshtml的header部分,我有以下几种可能:

    @* <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script>*@
   @* <script src="@Url.Content("http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.min.js")" type="text/javascript"></script>*@
    @*    <script src="@Url.Content("http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.11/jquery-ui.min.js")" type="text/javascript"></script>*@
    <script src="@Url.Content("https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js")" type="text/javascript"></script>

我无法加载这些脚本中的任何一个,因为 IIS 内的站点上不显示小部件。在 Visual Studio 中,我可以看到 jQuery 内容。

我查看了该站点的所有 IIS 设置,但似乎没有任何与 javascript 相关的内容。我阅读了以下相关帖子:

这里似乎不是这种情况,因为我尝试了使用正确 Url.Content 语法的绝对路径。可能遗漏了什么,但会是什么?

编辑 1 从 google 更改了加载缩小版的 jQuery 以查看是否是问题所在。

【问题讨论】:

  • 如果您在 Firebug 中签入,是否正确加载了 jquery/jquery ui 脚本?您是否收到任何控制台错误?
  • 尝试在开发者工具窗口打开的情况下在 chrome 上运行该网站。您将能够查看文件是否正在加载。这可能根本不是 IIS 配置问题。
  • @Rory,IE9 调试工具中的控制台没有显示任何脚本加载问题,除了“SEC7115::visited 和 :link 样式只能在颜色上有所不同。某些样式未应用于 :visited。” IIS 记录。
  • @Brian。我正在通过 IE9 调试工具查看网络流量,它显示正在检索的脚本如下: URL Method Result Type Received Taken Initiator Wait‎‎ Start‎‎ Request‎‎ Response‎‎ Cache read‎‎ Gap‎‎ ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js GET 304 text/javascript 240 B 47 ms

标签: jquery asp.net iis-7 razor


【解决方案1】:

当您在另一个域中引用项目时,您不需要 HTML 帮助器@Url.Content() 尝试仅使用不带帮助器的 URL。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" 
        type="text/javascript"></script>

此外,如果您可以发布指向该站点的链接或在浏览器中呈现的原始 HTML,我们可以快速确定发生了什么。

【讨论】:

  • 使用带有帮助器的 URL 似乎不是问题,因为通过 IE9 复制工具查看源代码表明 HTML 帮助器已被剥离,并且 src 指向正确的目的地。此外,一旦我弄清楚脚本加载的一般情况,我将使用脚本。不幸的是,该网站尚未公开,因此无法发布链接。我正在本地 IIS 上对此进行测试。
  • 一件事,你不需要指定 http: 或 https:,如果你使用 "//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min. js" 它将使用当前模式(http 或 https)。那不是你的问题,但我想我会指出你。我会使用 Fiddler 或 Firefox 中的“网络”选项卡来查看单个文件请求,看看是否有任何原因挂起
【解决方案2】:

感谢大家的回复。经过进一步挖掘,事实证明这毕竟不是 jQuery 加载问题。脚本正在正确加载。如果我像这样硬编码 jQuery 可选择的子项

<ol id="selectable">
                <li class="ui-state-default">test</li>
            </ol>

它在 IIS 下加载。

然而,jQuery selectable 是在以下 ajax sn-p 中动态赋予子级的:

  function GetBusRoutes(parameters) {
         $.ajax({
                type: "POST", 
                 url: "/home/GetAvailableRoutes",  
                contentType: "application/json; charset=utf-8", 
                dataType: "json", 
                failure: function (msg) {
                    alert(msg);
                }, 
                success: function (msg) {
                    var selectable = $('#selectable');
                    $.each(msg, function(i, route) {
                        selectable.append($('<li/>', { "class": "ui-state-default", text: route.Name}));
                    });
                } 

         });
     }

如果 HTTP GET 请求失败并出现 404,因为它试图将 url 解析为 http://localhost:80/home/GetAvailableRoutes 而不是调用我的控制器操作,这就是站点在 Visual Studio 下运行时发生的情况。如果我无法弄清楚传递给 ajax url 的正确语法,将在此发布另一个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多