为什么我的AJAX请求依赖于资源的文件扩展名?

时间:2011-05-02 21:31:40

标签: javascript ajax dojo

在以下示例中,“xxx.xml”是有效的XML文件,“xxx.txt”是其副本(但扩展名已更改)。

为什么我不能在我的AJAX请求中交替使用这些文件?

function test(url, handleT){
    dojo.xhrGet({
        url: url,
        handleAs: handleT,
        load: function(data, ioArgs) {
            console.log('data=',data);
        }
    });
}

test('xxx.xml', 'xml');  //Works OK
test('xxx.txt', 'text'); //Works OK
test('xxx.xml', 'text'); //Works OK

test('xxx.txt', 'xml');  //data === null ?!

handleAs参数不应该为我做这些转换吗?

这是一般情况还是只发生在Dojo上?

3 个答案:

答案 0 :(得分:1)

如果您在包含文件的目录中的.htaccess中编写以下内容,则可以使用所需的扩展名:

ForceType text/xml

答案 1 :(得分:0)

网络服务器将为扩展程序提供不同的内容类型。坚持.xml,或在网络服务器上更改。

修改

更具体一点:由于XML也是文本,因此可以“降级”为文本 - 每个XML文档也是文本文档。并非每个文本文档都是XML文档,因此您无法将其“升级”为XML。

您的网络服务器可能将.txt作为“普通/文本”提供 - 而且不是XML。

答案 2 :(得分:0)

看起来Fiferox一直都是错的: https://developer.mozilla.org/en/XMLHttpRequest#responseXML

(尚未测试IE中的工作原理)