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