当我通过IE运行时,下面的脚本可以正常运行,但是当我通过Chrome或Firefox运行时,它不会运行。我发现"发生了调用错误"。有谁知道为什么会发生这种情况以及我需要做些什么来解决它?
var isIE8 = window.XDomainRequest ? true : false;
var dictionary = createCrossDomainRequest();
var url = 'http://www.math.sjsu.edu/~foster/dictionary.txt';
makeRequest();
function createCrossDomainRequest() {
var request;
if (isIE8) {
request = new window.XDomainRequest();
}
else {
request = new XMLHttpRequest();
}
return request;
}
function makeRequest() {
if (dictionary) {
if(isIE8) {
dictionary.onload = requestSucceeded;
dictionary.open("GET", 'http://www.math.sjsu.edu/~foster/dictionary.txt', true);
dictionary.send();
}
else {
dictionary.open("GET", 'http://www.math.sjsu.edu/~foster/dictionary.txt', true);
dictionary.withCredentials = true;
dictionary.onreadystatechange = handler;
dictionary.send();
}
}
else {
alert("No Invocation Took Place");
}
}
function handler() {
if (dictionary.readyState === 4){
if (dictionary.status == 200){
requestSucceeded();
}
else {
alert("Invocation Errors Occurred");
}
}
}
function requestSucceeded() {
resultText = dictionary.responseText;
document.getElementById( 'demo' ).innerHTML += resultText;
}
答案 0 :(得分:1)
你确定IE8没有默默失败吗?它看起来像是绕过了handler()而直接调用了requestSucceeded()。
您需要为您尝试访问的资源(dictionary.txt)设置Access-Control-Allow-Origin标头。
如果您不能这样做,那么您可以复制该文件并将其托管在您的域中。