【问题标题】:Dojo 1.9 JsonRest remote url on a different server不同服务器上的 Dojo 1.9 JsonRest 远程 URL
【发布时间】:2013-09-18 17:26:30
【问题描述】:

我正在尝试让 dojo 显示来自远程 Web 服务的 Json 数据。不过我需要明确一点——托管我访问的 html/dojo 页面的 Web 服务器与运行返回 json 数据的 Web 服务的服务器不同——Web 服务服务器无法可靠地提供 html 页面(别问!!)。

作为测试,我将页面移动到与 Web 服务相同的 Web 服务器中,并且以下内容有效。一旦我将它移回以便从 Apache 提供 html/dojo(//myhost.nodomain:82 说)并且发送 json 的 Web 服务是“{target:http://myhost.nodomain:8181}”,它就会停止工作。

我使用 FFox 查看网络,我看到 Web 服务调用正常,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;
                        });

        }
    );

【问题讨论】:

    标签: json dojo


    【解决方案1】:

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

    您可以简单地使用它,返回的数据可以插入到存储中,然后插入到网格中。

    【讨论】:

    • 不错的——正是我需要的。我将开始围绕这个进行构建。
    【解决方案2】:

    您是否熟悉同源政策:

    http://en.wikipedia.org/wiki/Same-origin_policy

    基本上,它限制网站向其他域执行 AJAX 请求,而不是加载 html 页面。克服这个问题的常见解决方案是 CORS 和 JSON-P。但是,请记住,这些限制是出于安全原因。

    【讨论】:

    • 我想我不是,但现在是。这也是我所需要的——了解是什么阻止了它的工作。老实说,我并没有抱太大希望我的方法会奏效——只是不知道为什么不;-) 谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多