Dojo 1.9 JsonRest远程URL在不同的服务器上

时间:2013-09-18 17:26:31

标签: json dojo

我正在尝试让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;
                        });

        }
    );

2 个答案:

答案 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
});

您可以简单地使用它,并且可以将返回的数据插入到商店中,然后插入到网格中。