2012-04-27 38 views
1

我想知道是否有人可以幫助我,我已經看到了一些在網絡上使用XDomainRequest的例子,但是他們並沒有真正解釋代碼。我正在嘗試加載一個XML文件,所以我可以解析它。我正在使用的代碼如下。XDomainRequest總是有錯誤

var xdr = new XDomainRequest();    
      xdr.onerror = 
      function() 
      { 
        alert('Error!'); 
      };    
      xdr.ontimeout = 
      function() 
      { 
        alert('Timeout!'); 
      }; 

      xdr.onprogress = 
      function() 
      { 
        alert('Loading...'); 
      }; 
      xdr.onload = 
      function() 
      { 
        alert('File:' + xdr.responseText); 
      } 

      xdr.timeout = 10000; 
      xdr.open("GET","http://www.spectraltechnologies.co.uk/webbuilder2020/Instrument_Lamps_New.txt", false); 
      xdr.send(); 

每當我嘗試使用它時,它總是返回xdr.onerror和伴隨的警報。它所請求的文件最初是一個XML文件,並且內部是XML格式,但是我已經創建了一個.txt副本,因爲我知道這是XDomainRequest接受的唯一東西。

我已經能夠爲Firefox和Chrome瀏覽器製作解決方案,但Internet Explorer已經給我帶來了很多問題。我真的希望有人可以提前幫助,謝謝。

+0

你什麼錯誤? – Venge 2012-04-27 03:50:25

+0

我不知道,我不知道在哪裏可以找到它。這是返回錯誤的XDomainRequest對象。 這行代碼是我知道我得到的錯誤:alert('Error!'); – danielcooperxyz 2012-04-27 03:53:57

回答

1

我通過堅持XDomainRequest的很長且非常具體的規範來解決這個問題。我的第一個問題是,我訪問的文件/網站的響應標題不正確。

這個網站使用的「的.htaccess」文件,所以我可以通過添加下面的代碼來解決這個問題:

<filesMatch "\Instrument_Lamps_New.txt$"> 
    <IfModule mod_headers.c> 
    Header add Access-Control-Allow-Origin "*" 
    </IfModule> 
    </filesMatch> 

此代碼檢查,如果被訪問的文件,是一個我想要的指定的標題,然後將其添加到標題。

我的第二個問題是,使用XDomainRequest,您只能訪問與您打開請求的文件具有相同協議的文件。即http僅打開http,https只打開https。由於調試網站,我從我自己的文件系統打開網頁,因此錯誤發生是由於「file:// ...」≠「http:// ...」。

因此,確保我的響應頭包含「Access-Control-Allow-Origin」頭並且我上傳了它的頁面後,它工作正常。

本網站包含的XDomainRequest的更多信息: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

+0

你有沒有想法我正在使用java和jsp我們該怎麼做。 – Amit 2012-09-19 06:01:24