将编码的JSON加载到Dojo Grid中

时间:2013-02-10 23:21:37

标签: php mysql json dojo

我在php中编程, 我想取一个array我(从mysql结果集中提取),将其转换为JSON,然后在dojox.grid.DataGrid中使用它。

我从this link:

得到了一个想法

我在array上使用了以下内容(在名为getJSON.php的文件中)

echo $ajax = "{identifier: 'db_id', 'items':".json_encode($array)."}";

然后我尝试这样做(在我的主页中):

var store = new dojo.data.ItemFileWriteStore({ url: 'getJSON.php' });

其他所有内容与Dojo文档指定的完全相同。 网格显示,但不加载数据,而是写入Sorry, an error occurred

有谁知道原因?希望我能给你足够的信息。

1 个答案:

答案 0 :(得分:1)

我没有使用ItemFileWriteStore!自Dojo 1.6以来,它们发生了很大的变化,所以也许你看了一些不是最新的东西。

试试这段代码:

  

//加载必要的组件(这是与AMD的dojo)!

     

require([“dojo / aspect”,'dojo / _base / lang','dojox / grid / DataGrid'   ,'dojo / dom','dojo / store / JsonRest','dojo / data / ObjectStore',   '道场/ domready中!'],

     

function(aspect,lang,DataGrid,dom,JsonRest,ObjectStore){//将组件映射到vars ...

var store = new JsonRest({    
      target: "getJSON.php" // Use a URL that you can open up in a browser.
  });


/*layout for the grid, you will have to adapt this to your columns !!!*/
var layout = [[
  {'name': 'Filename', 'field': 'documentName', 'width': '300px'},
  {'name': 'Size', 'field': 'fileSize', 'width': '100px'},
  {'name': 'Id', 'field': 'id', 'width': '200px'}
]];

dataStore=ObjectStore({objectStore: store}); // Transform to Objectstore !

/*Now we create a new grid*/
var grid = new DataGrid({
    id: 'grid',
    store:dataStore, // Connect the store
    autoWidth:false,
    structure: layout, // Connect the layout
    rowSelector: '0px'});


grid.placeAt("yourTargetDivId"); // Has to be an existing DOM Element with id !
grid.startup(); // START IT !
     

});

请首先回复一下这样简单的事情来试试这段代码:

  

echo'[{“id”:“1”,“fileSize”:“100kb”,“documentName”:“Lucian!”},   {“id”:“2”,“fileSize”:“900kb”,“documentName”:“Pew Pew!”}]';

然后用你自己的JSON ......