js在Chrome中不起作用,但在IE中有效

时间:2013-12-03 13:55:15

标签: javascript jquery html internet-explorer google-chrome

我有可以在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中都不起作用)) 还有其他想法吗?

2 个答案:

答案 0 :(得分:1)

这是因为跨源资源共享,单击here以获取更多详细信息。您需要在服务器上设置Access-Control-Allow-Origin标头,并定义有权访问该资源的域。我在使用Internet Explorer的服务器上测试了您的代码并得到了同样的错误。

答案 1 :(得分:0)

你遇到异步问题。如果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);
});