2012-11-12 85 views
0

我已經實施瞭解決方案發現here,但它不適用於Firefox。Firefox本地AJAX調用

IE加載並讀取XML文檔正確 罷工說,如果數據類型是「字符串」數據變量保存XML,但將其加載到XML變量返回下面相同的函數。 XML文件是存儲在與HTML文件相同的文件夾中的平坦文件。該文件正在從"file:///D:/..."運行,而不是從網絡服務器運行。

火狐版本16.0.2,我已經試過的jQuery 1.7.1和1.8.2。我做了一個dataType比較,數據不是XML,但只是說Object

我做的$(data).contents警報,並得到:

function (c, d) { 
    var e = p.map(this, b, c); 
    return bc.test(a) || (d = c), d && typeof d == "string" && (e = p.filter(d, e)), e = this.length > 1 && !bg[a] ? p.unique(e) : e, this.length > 1 && bd.test(a) && (e = e.reverse()), this.pushStack(e, a, k.call(arguments).join(",")); 
} 

我已經嘗試設置security.fileuri.strict_origin_policy,但沒有效果。

下面是代碼:

$.ajax({ 
     url: "COBIE.xml", 
     dataType: ($.browser.msie) ? "text" : "xml", 
     success: function (data) { 
      if (typeof data == "string") { 
       xml = new ActiveXObject("Microsoft.XMLDOM"); 
       xml.async = false; 
       xml.loadXML(data); 

       // Returned data available in object "xml" 
       setMessage("XML date has been loaded"); 
      } else if (typeof data == "xml") { 
       xml = data; 
       alert($(xml).contents); 
       // Returned data available in object "xml" 
       setMessage("XML date has been loaded"); 
      } else { 
       alert($(data).contents); 
       setMessage("I have no idea what data you're trying to load"); 
      } 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      setMessage(errorThrown); 
     } 
    }); 
+0

js是弱類型語言,'typeof data'只會返回''string''或''object''在你的情況下。 – xiaoyi

+0

您是否考慮設置本地XAMPP或Node.js服務器並使用它?第一次啓動它需要大約一個小時,而永遠只需要大約10分鐘;根據您的最終目標是什麼(即針對這種情況下的開發),可能會節省您一些瀏覽器安全策略的時間和精力。 – Kato

回答

0

該代碼工作正常。我的XML有一些有趣的東西,所以我不能讓它解析正確,但它沒有給出錯誤。現在正在工作。

1

如果您已經安裝Firebug,您可以用F12來查看網頁的HTML,以及可以訪問的控制檯。

然後,而不是使用警報來看看$(數據).contents,您可以使用console.debug像這樣

console.debug($(data).contents); 

我不知道,我知道的回答你的問題,但究竟這應該讓你更好地瞭解發生了什麼。

+0

謝謝。我已經添加了該功能,但到目前爲止,我還沒有找到要報告的錯誤。 – Bishop