【问题标题】:Consume WCF crossdomain using JSONP to store in datagrid and view data dojo?使用 JSONP 使用 WCF 跨域存储在数据网格中并查看数据道场?
【发布时间】:2012-08-22 01:26:27
【问题描述】:

我在任何地方都找不到这个,我不知道为什么跨域 REST 请求没有被 dojo 解决。无论如何,这是问题所在:

我正在实现 dojo 数据网格,我正在尝试从不在我的域中的 WCF 获取网格的数据,所以我提出了跨域问题,我正在尝试通过使用 JSONP 来解决这个问题.

但我是道场的新手,所以我可能做错了什么。这是我的代码:

require([
         "dojo/store/JsonRest",
         "dojo/store/Memory",
         "dojo/store/Cache",
         "dojox/grid/DataGrid",
         "dojo/data/ObjectStore",
         "dojo/query",
         "dijit/form/Button",
         "dojo/domReady!",
         "dojo/request/script","dojo/dom-construct"
     ],function(script, domConstruct){

  //make the request just as before
  script.get("http://localhost:8060/ListService.svc/LoadLists?uid=c4446476-15e6-e111-9ecb-b7c5971d170a", {
    jsonp: "callback",
    query: {q: "#dojo"}
   }).then(function(data){
        test = data;         
    }).then(function(){
     console.log(results);
    });
 }, function (JsonRest, Memory, Cache, DataGrid, ObjectStore ,query) {

         grid = new DataGrid({
             store: dataStore = test,

             structure: [
                 { name: "Blog Id", field: "id", width: "50px", },
                 { name: "Name", field: "listtype", width: "200px",classes:"Name" },
                 { name: "Phone Number", field: "longlevel", width: "200px",classes:"test" }
             ]
         }, "gridTest"); // make sure you have a target HTML element with this id

         grid.startup();

         dojo.query("body").addClass("claro");

         grid.canSort = function () { return false; };


     });

我得到的错误是查询不是一个函数。任何想法如何正确实施。

【问题讨论】:

    标签: javascript wcf datagrid dojo jsonp


    【解决方案1】:

    简单的错误只是将数据网格命令放在第一个然后返回数据

    require([
             "dojo/store/JsonRest",
             "dojo/store/Memory",
             "dojo/store/Cache",
             "dojox/grid/DataGrid",
             "dojo/data/ObjectStore",
             "dojo/query",
             "dijit/form/Button",
             "dojo/domReady!",
             "dojo/request/script","dojo/dom-construct"
         ],function(script, domConstruct){
    
      //make the request just as before
      script.get("http://localhost:8060/ListService.svc/LoadLists?uid=c4446476-15e6-e111-9ecb-b7c5971d170a", {
        jsonp: "callback",
        query: {q: "#dojo"}
       }).then(function(data){
           function (JsonRest, Memory, Cache, DataGrid, ObjectStore ,query) {
    
             grid = new DataGrid({
                 store: dataStore = test,
    
                 structure: [
                     { name: "Blog Id", field: "id", width: "50px", },
                     { name: "Name", field: "listtype", width: "200px",classes:"Name" },
                     { name: "Phone Number", field: "longlevel", width: "200px",classes:"test" }
                 ]
             }, "gridTest"); // make sure you have a target HTML element with this id
    
             grid.startup();
    
             dojo.query("body").addClass("claro");
    
             grid.canSort = function () { return false; };
    
    
         })        
        }).then(function(){
         console.log(results);
        });
     };
    

    如果您仍然发现问题可能是因为网格是在请求从 wcf 返回之前创建的。

    如果发生这种情况,请使用 dojo 1.8 中的 Deferred,它可以让您控制您的流程顺序。

    这样您就可以调用请求并给它一些时间,然后将数据放入要查看的网格中。

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 2012-11-05
      • 2011-07-27
      • 1970-01-01
      • 2013-09-26
      • 2014-01-13
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      相关资源
      最近更新 更多