我正在尝试为ReST应用程序编写一个基于浏览器的Javascript客户端,该应用程序使用XML进行响应(因此似乎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)
}
});
检索此数据的正确方法是什么?
答案 0 :(得分:0)
dojo.io.script.get 方法会注入一个< script>来自指定的网址。此脚本中的数据内容将传递给您的加载函数;因此,内容必须验证为Javascript。您无法将XML加载到脚本标记中。
如果要加载XML,则需要使用 dojo.xhrGet ;但是,这不允许向第三方网址发出请求。使用 dojo.io.script.get 的优点是,您可以使用与加载它们的页面不同的原始地址。
dojo.xhrGet({
handleAs: "xml",
load: function(dom){
// do something with the DOM XML object
},
error: function(error){
}
});
如果您尝试从其他网站加载XML,那将是一个死胡同。如果您有权访问发送服务器,则可以使用 Access-Control-Allow-Origin 标头。
我使用的另一个解决方案是编写代理脚本(使用PHP或其他服务器语言)来镜像正确域上的XML。如果你这样做,你需要小心,以包括良好的检查,以便你的服务器代码不会被代理人滥用代理。
有关Access-Control-Allow-Origin的更多信息,请参阅以下Stackoverflow对话:
jQuery XML REST Access-Control-Allow-Origin