使用javascript交叉服务器请求

时间:2015-11-11 15:48:52

标签: javascript cors

当我通过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;
 }

1 个答案:

答案 0 :(得分:1)

你确定IE8没有默默失败吗?它看起来像是绕过了handler()而直接调用了requestSucceeded()。

您需要为您尝试访问的资源(dictionary.txt)设置Access-Control-Allow-Origin标头。

如果您不能这样做,那么您可以复制该文件并将其托管在您的域中。