0

我正在尝试为响应 XML 的 ReST 应用程序编写一个基于浏览器的 Javascript 客户端(因此 JSONP 似乎是不可能的)。

我正在尝试使用检索数据,dojo.io.script.get但传递给回调函数的参数是一个对象,我似乎无法从中检索响应的 XML 数据。

dojo.io.script.get({url:"http://enterpriseapp.enterprisedomain/path/to/rest/collection",
    load:function (data) {
        // 'data' does not contain the actual response (which is XML)
    }
});

检索此数据的正确方法是什么?

4

1 回答 1

0

dojo.io.script.get方法将从指定的网址注入 <script>。此脚本中的数据内容将传递给您的加载函数;因此,内容必须验证为 Javascript。您不能将 XML 加载到脚本标记中。

如果要加载 XML,则需要使用dojo.xhrGet;但是,这将不允许对 3rd 方 URL 的请求。使用dojo.io.script.get的优点是您可以使用与加载它们的页面不同的源地址。

dojo.xhrGet({
    handleAs: "xml",
    load: function(dom){
        // do something with the DOM XML object
    },
    error: function(error){
    }
});

请参阅:dojo.xhr 获取文档

如果您尝试从另一个网站加载 XML,那将是一条死胡同。如果您有权访问发送服务器,则可以使用Access-Control-Allow-Origin标头。

我使用的另一种解决方案是编写代理脚本(用 PHP 或其他服务器语言)以在正确的域上镜像 XML。如果您这样做以包含良好的检查,则需要小心,以免您的服务器代码被某人滥用以进行代理。

有关 Access-Control-Allow-Origin 的更多信息,请参阅以下 Stackoverflow 对话:
jQuery XML REST Access-Control-Allow-Origin

于 2012-11-08T14:55:23.380 回答