简而言之,我有一个本地运行良好的项目,但一旦上传到我的服务器,我的一个XMLHttpRequest失败了。正在加载的XML(在本例中为.tmx)文件的相对路径肯定是正确的。任何帮助解决这个问题都将不胜感激。
项目的位置为www.jorum.se/fancypants/,以及game.js中的相关代码(第22行)。
答案 0 :(得分:3)
服务器上的XML文档未使用text/xml
内容类型提供,因此XmlHttpRequest对象不将响应视为XML,这意味着未设置responseXML
属性。请注意,responseText
属性确实包含XML文本。
修复HTTP服务器以返回正确的内容类型。
答案 1 :(得分:0)
这让我看到的AJAX请求很好。根据我的估算,你的问题就是这些问题:
var xmldoc = req.responseXML;
var mapwidth = xmldoc.documentElement.getAttribute("width");
xmldoc为null,因此抛出以下错误:
game.js:22
Uncaught TypeError: Cannot read property 'documentElement' of null
我也很好奇你为什么要在你已经加载jQuery时手动制作自己的XMLHttpRequest对象。为什么不使用jQuery.ajax?您可以将参数设置为包含dataType
xml
,即使您没有正确设置HTTP标头,也可以将其强制解析它。
答案 2 :(得分:0)
您是否在自己喜欢的浏览器中查看javascript错误?我在game.js
的第22行看到了一个错误,因为你的responseXML并不像你期望的那样,因此xmldoc没有按照你想要的方式进行初始化。破解调试器(Chrome浏览器或Firefox中的Firebug)并亲自查看失败的原因。如果是我,我会在game.js第21行设置一个断点,然后查看req对象,看看它告诉我最后一次交易(错误,其他数据等等)。
请参阅responseXML here on Mozilla's reference的说明。 null responseXML
的可能原因是服务器不应用text/xml
Content-Type标头或XML解析错误。如果您的服务器未设置正确的MIME类型,则可以强制它使用overrideMimeType()
解析为XML。