ASP.NET MVC AJAX Sys是未定义的错误

cna*_*gle 7 asp.net asp.net-mvc asp.net-ajax

当我尝试AJAX调用时,我在MVC应用程序中的某个页面上收到"Microsoft JScript运行时错误:'Sys'未定义"错误.AJAX调用是从部分视图中进行的,该视图嵌入在多个页面中.它可以在除一个页面之外的所有页面上正常工作.我已经阅读了指向web.config文件设置和.axd映射的帖子作为可能的解决方案,但是在web.config中正确配置了应用程序,并且IIS中的.axd映射也是正确的.此外,它可以在使用此局部视图的所有页面上正常工作,除了一个.它表现得像AJAX库没有加载这一页.

对脚本文件的引用位于共享的site.master文件中.所有页面(包括不起作用的页面)都引用相同的母版页.

有任何想法吗?我已经在这个工作了两天了.谢谢.

编辑:正如Sam在下面指出的那样,似乎AJAX调用在AJAX库有机会加载之前就已经开始了.但是,AJAX调用是在页面呈现后很长时间由提交按钮触发的,因此AJAX库有足够的时间加载 - 抱歉第一次没有提供足够的信息.

小智 19

在标记web.config下添加以下代码行appsettings:

<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Run Code Online (Sandbox Code Playgroud)


小智 17

以防万一...使用以下内容来避免路径问题

<script src="<%= Url.Content("~/Scripts/MicrosoftAjax.debug.js") %>" 
    type="text/javascript"></script>  
<script src="<%= Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js") %>" 
    type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

资料来源:http://msdn.microsoft.com/en-us/library/dd381533.aspx

谢谢,阿蒂


Sam*_*Sam 4

在 Firefox 中加载页面,然后使用 Firebug 检查页面 - 您将能够看到已加载的所有单独脚本,以及发出的所有网络请求,以及它们是否成功。这比尝试从服务器角度进行故障排除更好。

如果您使用 IE8,则可以使用“开发人员工具”窗口,但我认为 Firebug 更好 - 不过这两个工具都支持 JavaScript 调试。

最可能的问题是,您在部分视图中运行脚本之前,它所依赖的脚本有机会加载 - 确保部分视图中的任何脚本调用仅在页面加载后运行,并且加载过程中不立即。