js不适用于Chrome,但适用于IE

js doesnt work in Chrome but works in IE

本文关键字:适用于 IE Chrome 不适用 js      更新时间:2024-03-07

我有在IE浏览器上工作的JS代码。但它在Chrome和Mozilla中不起作用。应该更改什么才能使其在这些浏览器上工作?

<html>
<head>
<script type="text/javascript">
function readFile(url) {
    pageRequest = new XMLHttpRequest()
    pageRequest.open("GET", url, false);
    pageRequest.send(null);
    return pageRequest.responseText;    
}
</script>
</head>
<body>
<script type="text/javascript">
    var txt = readFile("?GameID=5&from=0&num=50000");
    document.write(txt);
</script>
</body>
</html>



function readFile(url) {
    var request = new XMLHttpRequest();
    request.open("GET", url, false);
    request.send();
    return request;
}
var request = readFile("http://? GameID=5&from=0&num=50000");
request.onload = function() {
    document.write(request.responseText);
};

这段代码在IE和Chrome中都不起作用)还有其他想法吗?

这是因为跨来源资源共享,请单击此处了解更多详细信息。您需要在服务器上设置Access Control Allow Origin标头,并定义有权访问该资源的域。我在使用Internet Explorer的服务器上测试了你的代码,结果出现了同样的错误。

您遇到了异步问题。如果HTTP请求尚未完成,您将无法访问request.responseText。这可能在某些浏览器中起作用,因为纯粹是偶然的。因此,我们必须附加一个onload事件侦听器。

试试这个代码:

function readFile(url) {
    var request = new XMLHttpRequest();
    request.open("GET", url, false);
    request.send();
    return request;
}
var request = readFile("http://example.com/displayScore.php?GameID=5&from=0&num=50000");
request.onload = function() {
    document.write(request.responseText);
};

您也可以向readFile传递第二个参数,它是这样的函数,而不是返回整个对象:

function readFile(url, onload) {
    //load code goes here...
    if (typeof onload == "function") {
        request.onload = function(){
            onload(request),
        };
    }
}
readFile("url", function(e){
    document.write(e.responseText);
});