簡而言之,我有一個本地運行正常的項目,但是一旦上傳到我的服務器,我的一個XMLHttpRequest就會失敗。被加載的XML(在這種情況下爲.tmx)文件的相對路徑絕對正確。任何幫助解決這個問題將不勝感激。XMLHttpRequest在本地工作,但不在服務器上
該項目的位置是www.jorum.se/fancypants/,並在game.js(第22行)有問題的代碼。
簡而言之,我有一個本地運行正常的項目,但是一旦上傳到我的服務器,我的一個XMLHttpRequest就會失敗。被加載的XML(在這種情況下爲.tmx)文件的相對路徑絕對正確。任何幫助解決這個問題將不勝感激。XMLHttpRequest在本地工作,但不在服務器上
該項目的位置是www.jorum.se/fancypants/,並在game.js(第22行)有問題的代碼。
服務器上的XML文檔沒有使用內容類型text/xml
,因此XmlHttpRequest對象沒有將響應視爲XML,這意味着responseXML
屬性未被設置。請注意,responseText
屬性包含XML文本。
修復HTTP服務器返回正確的內容類型。
這使得我看到的AJAX請求很好。據我估計,你的問題是這些行:
var xmldoc = req.responseXML;
var mapwidth = xmldoc.documentElement.getAttribute("width");
xmlDoc中爲空,因此它拋出以下錯誤:
game.js:22
Uncaught TypeError: Cannot read property 'documentElement' of null
,我也很好奇,爲什麼你要通過努力無論如何,當你已經加載jQuery的時候手動製作你自己的XMLHttpRequest對象。爲什麼不使用jQuery.ajax?您可以將參數設置爲包含dataType
的xml
,即使您沒有正確設置HTTP標頭,也可能會強制它解析它。
您是否正在用您最喜歡的瀏覽器觀看javascript錯誤?我在game.js
的第22行看到一個錯誤,看起來像是因爲你的responseXML不是你期望的那樣,因此xmldoc沒有按照你想要的方式進行初始化。破解打開一個調試器(Chrome檢查器或Firefox中的Firebug),看看自己的失敗。如果是我,我會在game.js的第21行設置一個斷點,然後查看req對象,查看它告訴我的最後一個事務(錯誤,其他數據等)。
查看responseXML here on Mozilla's reference的降解處理。可能的原因爲空responseXML
是服務器不應用text/xml
Content-Type標頭或XML解析錯誤。如果你的服務器沒有設置正確的MIME類型,你可以用overrideMimeType()
強制它解析爲XML。
或者,如果無法修復服務器,則覆蓋XMLHttpRequest對象以強制它被解析爲XML。 – jfriend00
覆蓋MIME類型似乎解決了它。談到下一個問題。謝謝! – jlowgren