我正在尝试让dojo显示来自远程Web服务的Json数据。我需要明确一点 - 托管我访问的html / dojo页面的Web服务器与运行返回json数据的Web服务的服务器不同 - Web服务服务器无法可靠地提供html页面(不要问!!)。
作为测试,我将页面移动到与Web服务相同的Web服务器,以下工作。一旦我移回它以便从Apache(//myhost.nodomain:82说)提供html / dojo并且发送json的web服务是“{target:http://myhost.nodomain:8181}”,那么它就会停止工作
我用FFox来看看网络&我看到Web服务被称为ok,json数据也被返回&看起来是正确的(我知道它来自之前的测试),但字段不再设置。我已经尝试使用DataGrid和下面的普通页面具有相同的效果。
我是否趁着明显的东西绊倒???
谢谢
require([
"dojo/store/JsonRest",
"dojo/store/Memory",
"dojo/store/Cache",
"dojox/grid/DataGrid",
"dojo/data/ObjectStore",
"dojo/query",
"dojo/domReady!"
],
function(JsonRest, Memory, Cache, DataGrid, ObjectStore, query) {
var myStore, dataStore, grid;
myStore = JsonRest(
{
target: "http://localhost:8181/ws/job/definition/",
idProperty: "JOB_NAME"
}
);
myStore.query("JOB00001"
).then(function(results) {
var theJobDef = results[0];
dojo.byId("JOB_NAME").innerHTML = theJobDef.JOB_NAME;
dojo.byId("SCHEDULED_DAYS").innerHTML = theJobDef.SCHEDULED_DAYS;
});
}
);
答案 0 :(得分:0)
您是否熟悉同源政策:
http://en.wikipedia.org/wiki/Same-origin_policy
基本上,它限制网站向其他域发出AJAX请求,而不是加载html页面。解决这个问题的常见解决方案是CORS和JSON-P。但请记住,这些限制是出于安全原因。
答案 1 :(得分:0)
Frans对跨域限制的说法是正确的,但dojo有link来解决这个问题。
require(["dojo/request/iframe"], function(iframe){
iframe("something.xml", {
handleAs: "json"
}).then(function(xmldoc){
// Do something with the XML document
}, function(err){
// Handle the error condition
});
// Progress events are not supported using the iframe provider
});
您可以简单地使用它,并且可以将返回的数据插入到商店中,然后插入到网格中。