0

此代码来自Prototype.js。我已经查看了大概 20 个不同的教程,但我无法弄清楚为什么这不起作用。我得到的响应是空的。

new Ajax.Request(/path/to / xml / file.xml, {
   method: "get",
   contentType: "application/xml",
   onSuccess: function(transport) {
      alert(transport.responseXML);
   }
});

如果我将 更改responseXMLresponseText,那么它会以字符串形式向我提醒 XML 文件。这不是一个提供 XML 的 PHP 页面,而是一个实际的 XML 文件,所以我知道它不是响应标头。

4

2 回答 2

3

如果 transport.responseXML 为 null 但您有 transport.responseText 的值,那么我相信这是因为它不是有效的 XML 文件。

编辑: 我刚刚注意到,在我们的代码中,每当我们请求 XML 文件时,我们都会将内容类型设置为“text/xml”。我不知道这是否有所作为。

于 2008-09-10T16:44:39.720 回答
1

只是想分享我下午在responseXML响应的 NULL 结果中处理该问题。我的结果与问题中描述的完全一样:responseText 填充了 XML 文件,responseXML 为 NULL。因为我完全确定我的文件是有效的 XML 格式,所以错误一定是不同的。

Prototype v1.7文档中所述,我将内容类型设置为"application/xml"。无论如何,发送的响应总是“text/html”。

简而言之,我遇到的问题是,我的 XML 文件以“.gpx”结尾,因为它是 GPS 坐标的事实上的标准。我的本地 XAMPP Apache 安装的 mime-types 集合仅预见到结尾“xml”和“xsl”。添加“gpx”并重新启动服务器后,程序运行顺利,因为它应该是。

就我而言,有三种解决方案:

1)编辑Apache的“mime.types”文件。使用 XAMPP 安装,您可能会在“C:\xampp\apache\conf\mime.types”下找到它。搜索“application/xml”记录,修改如下:

application/xml xml xsl gpx

不要忘记重新启动服务器!

2)在相应文件夹的.htaccess中添加 mime 类型。打开或创建一个 .htaccess 文件并添加以下行:

AddType application/xml xml xsl gpx

3)在上传过程中,将文件类型更改为“xml”而不是您拥有的任何文件

希望我能安全一些时间给你们中的一个人。

于 2012-09-19T04:23:42.457 回答