我试图写一个REST应用与XML响应一个基于浏览器的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)
}
});
什么是检索此数据的正确方法是什么?
该dojo.io.script.get方法将注入一个从指定的Web地址<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){
}
});
请参阅: dojo.xhrGet文档
如果你正试图从其他网站加载XML这是一个有点穷途末路的。 如果你有机会到发送服务器可以使用访问控制允许来源头。
我已经使用的另一种解决方案是编写一个代理脚本(在PHP或其他服务器端语言),以反映在正确的域XML。 如果你这样做,包括良好的检查,这样你的服务器代码不被他人的代理滥用你需要小心。
请参阅下面的谈话#1所有关于访问控制允许来源:
jQuery的XML REST访问控制允许来源