Javascript XMLHttpRequest().send()在chrome和opera中不工作
以下javascript函数适用于IE、Safari和Firefox。但它在Chrome(33.0.)和Opera(16.0.1196)中失败了。加载时显示空白HTML页面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';
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应该对帮助您让其他用户知道哪些答案有用的答案进行投票。