Javascript XMLHttpRequest().send()在chrome和opera中不工作

Javascript XMLHttpRequest().send()在chrome和opera中不工作,javascript,google-chrome,Javascript,Google Chrome,以下javascript函数适用于IE、Safari和Firefox。但它在Chrome(33.0.)和Opera(16.0.1196)中失败了。加载时显示空白HTML页面 function readTestXMLFile() { if (window.ActiveXObject) { var xmlDoc = new ActiveXObject('Microsoft.XMLDOM'); xmlDoc.async = 'false';

以下javascript函数适用于IE、Safari和Firefox。但它在Chrome(33.0.)和Opera(16.0.1196)中失败了。加载时显示空白HTML页面

function readTestXMLFile() {

    if (window.ActiveXObject) { 
        var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
        xmlDoc.async = 'false';
        xmlDoc.load('test.xml');
    }
    else {     
        var requ = new XMLHttpRequest();
        alert("a");

        requ.open("GET", "test.xml", false);
        alert("b");

        requ.send(null);    //This line is not working in chrome and opera
        alert("c");

        var xmlDoc = requ.responseXML;
        alert(xmlDoc);
        alert("d");
    }

    return xmlDoc;
}

只打印“a”和“b”。之后就不会继续了。如果我使用requ.send()或requ.send(“”)而不是requ.send(null),则可以观察到相同的结果

如果我删除了requ.send语句(null),则会为xmlDoc打印“null”值。仍然是空白的HTML加载

请让我知道什么是正确的方式得到这项工作的铬和歌剧

谢谢


SRB.

对XMLHttpRequest.send方法的调用是异步的,因此需要稍微修改一下调用。成功返回响应时,下面修改的代码将打印响应内容:

 requ.addEventListener("load", function(e) {
           alert(req.responseText);
        }, false)

 requ.send(null);
更新: 我没有注意到您进行了同步发送请求呼叫

编辑 您需要使用此参数启动chrome才能访问本地文件

--允许从文件访问文件


例如:c:\Browser\chrome.exe--允许从文件访问文件

我认为问题在于您将null传递给send()方法。您正在发出GET请求,因此应该调用send而不带参数。我认为chrome因此引发了一个异常。只需删除空值

您的错误消息表明您正在尝试访问一个本地文件,该文件被视为“跨源请求”
,如果您尝试运行本地服务器,它应该可以工作

请看一看之前提出的这个问题,其中有相同的问题:

然后您将访问
http://localhost/.../test.xml
而不是
c:/localhost/../test.xml


您还可以为Chrome设置一个允许本地文件请求本地文件的标志:
-允许从文件访问文件

OP正在进行的调用实际上是同步的,因为他在
打开
中将
false
作为第三个参数,感谢您的回复。我以前尝试过这个解决方案,但没有改变任何东西。没有打印任何内容。responseText不会在Chrome和Opera中打印。但是responseText在Firefox和Safari中成功打印。我在控制台中收到“跨源请求仅支持HTTP”。错误消息。请让我知道我应该怎么做才能摆脱这一切?注意:我在java脚本中只有这个函数调用。没有其他函数调用。对于这个函数的返回值,我目前没有做任何事情(出于调试目的)。如果我删除对该函数的调用,HTML将成功加载。-谢谢xml文件在哪里?我正在访问与其他html文件一起保存的“test.xml”本地文件。当我在浏览器中打开html文件时,应该读取test.xml文件并显示一些内容。我没有使用任何服务器这样做。html和xml文件都安装在最终用户系统中。因此,用户安装这些文件并打开html文件,该文件将读取xml文件并显示一些内容。最终用户无需为此建立任何网络连接。一切都应该在本地进行谢谢如果你在浏览器控制台中查看Chrome,你会得到什么信息?我得到的唯一错误是test.xml不存在,这是预期的。我在控制台中得到“跨源请求仅支持HTTP”。错误消息。请让我知道我应该怎么做才能摆脱这一切?注意:我在java脚本中只有这个函数调用。没有其他函数调用。对于这个函数的返回值,我目前没有做任何事情(出于调试目的)。如果删除对该函数的调用,则HTML将成功加载。如果我使用requ.send()或requ.send(“”)而不是requ.send(null),则会观察到Thanksame结果。这并没有解决问题谢谢。我正在访问与其他html文件一起保存的“test.xml”本地文件。当我在浏览器中打开html文件时,应该读取test.xml文件并显示一些内容。我没有使用任何服务器这样做。html和xml文件都安装在最终用户系统中。因此,用户安装这些文件并打开html文件,该文件将读取xml文件并显示一些内容。最终用户无需为此建立任何网络连接。一切都应该在本地进行。那么有没有办法解决这个问题呢?请让我知道。-谢谢。我正在想为什么它只在chrome和opera中失败。是否可以在其他浏览器上使用ThanksIt取决于不同的浏览器如何处理对本地文件的请求。如果你看一下我链接到的问题,他们会推荐一些其他解决方案,比如在Chrome中设置标志,-允许从文件访问文件谢谢你的回答。我帮助我解决了Chrome和Opera的问题谢谢,SRBYou应该对帮助您让其他用户知道哪些答案有用的答案进行投票。