【问题标题】:Classic ASP Page that uses JavaScript crashing on new ActiveXObject使用 JavaScript 的经典 ASP 页在新的 ActiveXObject 上崩溃
【发布时间】:2017-07-07 19:19:26
【问题描述】:

我有一个 asp 经典页面,但语言是在 javascript 上设置的。像这样

<%@ Language=JavaScript %>

如果我尝试创建这样的 http 请求

   var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.4.0");

   var xmlhttp = new XMLHttpRequest();

页面只是崩溃并出现一般错误,如发生内部服务器错误。有谁知道我可以如何调查和解决这个问题?

谢谢

【问题讨论】:

    标签: javascript iis asp-classic xmlhttprequest


    【解决方案1】:

    该代码不打算在服务器上执行。它旨在执行客户端。服务器上没有安装 XHR 组件。

    【讨论】:

    • 这部分`var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.4.0");`实际上在旧服务器上工作,但在新服务器上不工作。
    • @omega 因为新服务器上没有安装 ActiveX 控件。
    • 如何安装?
    • 您可以阅读here。但是,你真的不应该像 15 年前那样做事。
    【解决方案2】:

    首先,您需要在 IIS 中启用详细错误页面以摆脱一般错误页面。

    我敢打赌这是 ActiveX component can't create object 错误,但请参阅 How To Configure IIS7 To Show ASP Errors?,这是一个带有屏幕截图的丰富指南。

    Microsoft 不再支持 MSXML 4.0。

    建议使用MSXML 6.0。它与4.0 兼容,因此将4.0 替换为6.0 就足够了。

    更多信息请参见MSXML Roadmap

    所以,使用var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0"); 或者如果你太挑剔,为了向后兼容,像下面这样实例化对象。

    var xmlhttp;
    try {
        xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.4.0");
    }
    catch(e) {
        try
        {
            xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0");
        } 
        catch(e) 
        {
            throw "object can't created";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多