程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> extjs關於jsonreader

extjs關於jsonreader

編輯:PHP基礎知識
 

在JavaScript中,JSON是一種非常重要的數據格式,key:value的形式比XML那種復雜的標簽結構更容易理解,代碼量也更小,很多人傾向於使用它作為EXT的數據交換格式。

JsonReader支持分頁,與JSON數據對應格式如下:

 totalProperty:   json數據中,保存總記錄數的屬性
 successProperty:  json數據中,保存是否返回成功的屬性名 
 root:       json數據中,保存記錄集的屬性的屬性名
 id:             json數據中,記錄中主鍵所對應的列的屬性名

 例如:為Json- Reader准備的JSON數據如下面的代碼所示:

        //JSON數據

        var json = { 'results': 2,

                     'rows': [

                                { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },

                                { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' }

                             ]

             }; 
在JsonReader中設置為如下代碼: 
   //JsonReader
             var reader = new Ext.data.JsonReader(
                 {
                     totalProperty: "results",  //totalRecords屬性由json.results得到
                     successProperty: true,    //json數據中,保存是否返回成功的屬性名
                     root: "rows",            //構造元數據的數組由json.rows得到
                     id: "id"                //id由json.id得到
                 }, [
                     { name: 'name', mapping: 'name' },
                     { name: 'occupation'}            //如果name與mapping同名,可以省略mapping
                 ] 
             ); 

 

jsonreader從proxy中讀取的數據需要進行解析,這些數據轉換成Record數組後才能提供給Ext.data.Store使用。

在JavaScript中,JSON是一種非常重要的數據格式,key:value的形式比XML那種復雜的標簽結構更容易理解,代碼量也更小,很多人傾向於使用它作為EXT的數據交換格式。為JsonReader准備的JSON數據如下面的代碼所示:

var data = {

id:0,

totalProperty:2,

successProperty:true,

root:[

{id:'id1',name:'name1',descn:'descn1'},

{id:'id2',name:'name2',descn:'descn2'}

]

};

與數組相比,JSON的最大優點就是支持分頁,我們可以使用totalProperty參數表示數據的總量。successProperty參數是可選的,可以用它判斷當前請求是否執行成功,進而判斷是否進行數據加載。在不希望JsonReader處理響應數據時,可以把successProperty設置成false。

現在來討論一下JsonReader,看看它是如何與上面的JSON數據對應的,如下面的代碼所示。

var reader = new Ext.data.JsonReader({

successProperty: "successproperty",

totalProperty: "totalProperty",

root: "root",

id: "id"

}, [

{name:'id',mapping:'id'},

{name:'name',mapping:'name'},

{name:'descn',mapping:'descn'}

]);

因為name和mapping部分的內容是相同的,其實這裡的mapping可以省略,默認會用name參數從JSON中獲得對應的數據。如果不想與JSON裡的名字一樣,也可以使用mapping修改。不過,mapping在這裡還有其他用途,如代碼清單10-3所示:

JsonReader設置mapping進行數據映射

var data = {

id:0,

totalProperty:2,

successProperty:true,

root:[

{id:'id1',name:'name1',descn:'descn1',person:{

id:1,name:'man',sex:'male'

}},

{id:'id2',name:'name2',descn:'descn2',person:{

id:2,name:'woman',sex:'female'

}}

] };

var reader = new Ext.data.JsonReader({

successProperty: "successproperty",

totalProperty: "totalProperty",

root: "root",

id: "id"

}, [

'id','name','descn',

{name:'person_name',mapping:'person.name'},

{name:'person_sex',mapping:'person.sex'}

]);

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved