XMLHttpRequest在本地工作,但不在服务器上工作

时间:2011-08-13 07:40:35

标签: javascript xmlhttprequest

简而言之,我有一个本地运行良好的项目,但一旦上传到我的服务器,我的一个XMLHttpRequest失败了。正在加载的XML(在本例中为.tmx)文件的相对路径肯定是正确的。任何帮助解决这个问题都将不胜感激。

项目的位置为www.jorum.se/fancypants/,以及game.js中的相关代码(第22行)。

3 个答案:

答案 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。

相关问题