none
部分用户浏览时弹出 "Sys"未定义 RRS feed

  • 问题

  • 我现在做AJAX开发,现在问题是大部分用户包括用IE6的用户都没有问题,但是有部分IE6的用户浏览页面的时候会出现"sys”未定义,请大家指点。出问题的IE版本是:6.0.2900.5512

    平和
    2009年8月13日 3:51

答案

  • 是的。, ajax里面使用的js主要是
    ScriptResource.axd
    
    
    
    
    返回的。造成脚本错误的原因是这个文件没有正确返回内容。看看出现问题的ie6与正常的ie6之间有和设置的差别,或者网络环境的差别,是否都打了最新的补丁等、

    另外参考下
    http://blogs.msdn.com/webtopics/archive/2009/02/27/asp-net-ajax-functionality-not-working-on-the-page-getting-sys-is-undefined.aspx

    看能否解决
    【孟子E章】
    • 已标记为答案 Weng Yuli 2009年8月13日 8:01
    2009年8月13日 6:37
    版主

全部回复

  • 请检查不同的浏览器是否都正常下载了同一组ASP.NET AJAX的js文件。
    Microsoft ASP.NET MVP
    2009年8月13日 4:01
    版主
  • 这有可能 是因为网络等原因 程序等原因 比如你自己添加的javascript segment 有错导致整个Javascript 出错了
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月13日 4:50
    版主
  • 正常下载同一组JS文件?


    平和
    2009年8月13日 4:54
  • 清空缓存,将网站加入到可信任站点试试。一般是文件没有下载完毕或者安全性限制造成的
    【孟子E章】
    2009年8月13日 4:55
    版主
  • 已经加入到可信任站点了。“Sys”未定义应该是AJAX自带的组件引起的,我写的纯JS没有问题。
    平和
    2009年8月13日 5:59
  • 是的。, ajax里面使用的js主要是
    ScriptResource.axd
    
    
    
    
    返回的。造成脚本错误的原因是这个文件没有正确返回内容。看看出现问题的ie6与正常的ie6之间有和设置的差别,或者网络环境的差别,是否都打了最新的补丁等、

    另外参考下
    http://blogs.msdn.com/webtopics/archive/2009/02/27/asp-net-ajax-functionality-not-working-on-the-page-getting-sys-is-undefined.aspx

    看能否解决
    【孟子E章】
    • 已标记为答案 Weng Yuli 2009年8月13日 8:01
    2009年8月13日 6:37
    版主
  • 谢谢老孟,我在网络上将大部分方法都尝试了,还是有一部分用户的页面浏览出现'Sys'未定义,我将JS贴上来,大家看看有问题的地方帮忙改一下。
    第一段代码: 
      <asp:ScriptManager ID="ScriptManager1" runat="server"> 
                </asp:ScriptManager> 
                    <script language="javascript" type="text/javascript"> 
                        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
                        function stoperror() { 
                            return true; 
                        } 
                        window.onerror = stoperror; 
                        function EndRequestHandler(sender, args) { 
    
                            if (args.get_error() != undefined) { 
                                document.getElementById('lblOnLineState').innerHTML = " <img style=\"filter: gray\" src=\"Images/online.gif\"/>" 
                                document.getElementById('lblOnLineState').title = "当前与服务器连接超时,稍后自动重试..." 
                                if ((args.get_response().get_statusCode() == '12007') || (args.get_response().get_statusCode() == '12029') || (args.get_response().get_statusCode() == '12019')) { 
                                    window.onerror = stoperror(); 
                                } 
                                else { 
                                    window.onerror = stoperror(); 
                                } 
                            } 
                            else 
                            { window.onerror = stoperror(); } 
                        } 
                </script> 
    
    第二段代码: 
    <script type="text/javascript"> 
            function showtab(m, n, count) { 
                for (var i = 1; i <= count; i++) { 
                    if (i == n) { 
                        getObject("td_" + m + "_" + i).className = "libg1"; 
                        getObject("tab_" + m + "_" + i).className = "show"; 
                    } 
                    else { 
                        getObject("td_" + m + "_" + i).className = "libg2"; 
                        getObject("tab_" + m + "_" + i).className = "hidden"; 
                    } 
                } 
            } 
            function showtb(m, n, count) { 
                for (var i = 1; i <= count; i++) { 
                    if (i == n) { 
                        getObject("dv_" + m + "_" + i).className = "g1"; 
                        getObject("div_" + m + "_" + i).className = "showing"; 
                    } 
                    else { 
                        getObject("dv_" + m + "_" + i).className = "g2"; 
                        getObject("div_" + m + "_" + i).className = "hiddening"; 
                    } 
                } 
            } 
            function getObject(objectId) { 
                if (document.getElementById && document.getElementById(objectId)) { 
                    return document.getElementById(objectId); 
                } 
                else if (document.all && document.all(objectId)) { 
                    return document.all(objectId); 
                } 
                else if (document.layers && document.layers[objectId]) { 
                    return document.layers[objectId]; 
                } 
                else { 
                    return false; 
                } 
            } 
        </script> 
        <script type="text/javascript"> 
            document.onkeydown = function() { 
    
                with (window.event) { 
                    if (keyCode == 116) { 
                        keyCode = 0; 
                        cancelBubble = true; 
                        return false; 
                    } 
                } 
            }  
    </script>


    平和
    2009年8月13日 7:09
  • 问题解决了,上面的JS写的比较烂。  

    解决方法竟然是重新建立虚拟目录就可以了。这是为什么呢?

    平和
    2009年8月13日 7:24
  • Sys未定义。其中一种可能是需要在web.config中配置aspnetajax的一段配置就OK了!
    2009年8月14日 10:59
  • 问题解决了,上面的JS写的比较烂。  

    解决方法竟然是重新建立虚拟目录就可以了。这是为什么呢?

    平和

    您好,很有可能先前的虚拟目录没有创建相应的应用程序。
    ScriptResource.axd是由System.Web.Extensions来处理的。如果不是应用程序就不会运行System.Web.Extensions来处理关于.axd文件的请求。
    因此生成不了相应的js文件。

    您可以把虚拟目录的应用程序删除,然后在服务中重启web服务。这时候再访问看看,看是不是会出现sys未定义错误,如果会则表示上面的推理正确。
    希望有帮助
    2009年8月14日 12:45
    版主
  • 我比较纳闷的是虽然通过重新建立虚拟目录解决了,但是如果是硬性的错误,应该是所有用户都会出错,为什么单单有几个用户会出错呢?
    平和
    2009年8月18日 0:30