2010-12-05 34 views
1

使用ExtJS的3+和服務器端發回下列JSON:ExtJS的商店讀者完全合格的JSON屬性名

{"com.klistret.cmdb.ci.pojo.QueryResponse": {"com.klistret.cmdb.ci.pojo.successful":true,"com.klistret.cmdb.ci.pojo.count":1,"com.klistret.cmdb.ci.pojo.elements":{"com.klistret.cmdb.ci.pojo.id":123,"com.klistret.cmdb.ci.pojo.name":"Mars","com.klistret.cmdb.ci.pojo.fromTimeStamp":"2010-07-08T16:38:00.478+02:00","com.klistret.cmdb.ci.pojo.createTimeStamp":"2010-07-08T16:38:00.478+02:00","com.klistret.cmdb.ci.pojo.updateTimeStamp":"2010-10-25T15:02:09.446+02:00","com.klistret.cmdb.ci.pojo.type":{"com.klistret.cmdb.ci.pojo.id":1,"com.klistret.cmdb.ci.pojo.name":"{http:\/\/www.klistret.com\/cmdb\/ci\/element\/logical\/collection}Environment","com.klistret.cmdb.ci.pojo.fromTimeStamp":"2009-08-05T11:20:12.471+02:00","com.klistret.cmdb.ci.pojo.createTimeStamp":"2009-08-05T11:20:12.471+02:00","com.klistret.cmdb.ci.pojo.updateTimeStamp":"2009-08-05T11:20:12.471+02:00"},"com.klistret.cmdb.ci.pojo.configuration":{"@www.w3.org.2001.XMLSchema-instance.type":"com.klistret.cmdb.ci.element.logical.collection:Environment","@Watermark":"past","com.klistret.cmdb.ci.commons.Name":"Mars"}}}}

讀者是設置瞭如下:


    var reader = new CMDB.JsonReader(
      { 
      totalProperty  : 'com.klistret.cmdb.ci.pojo.count', 
       successProperty  : 'com.klistret.cmdb.ci.pojo.successful', 
       idProperty   : 'com.klistret.cmdb.ci.pojo.id', 
       root    : 'com.klistret.cmdb.ci.pojo.elements' 
      }, 
      [ 
      {name: 'Id', mapping: 'com.klistret.cmdb.ci.pojo.id'}, 
       {name: 'Name', mapping: 'com.klistret.cmdb.ci.pojo.name'} 
      ] 
     ); 

商店爲:


    var ds = new Ext.data.Store({ 
      proxy  : new Ext.data.ScriptTagProxy({ 
       url : 'http://sadbmatrix2:55167/CMDB/resteasy/element' 
      }), 

      reader  : reader 
     }); 

讀者延伸Ext.data.JsonReader如通過http://erichauser.net/2007/11/07/more-wcf-json-and-extjs/解釋,以除去從服務器返回的JSON中的「com.klistret.cmdb.ci.pojo.QueryResponse」開始節點。

擴展閱讀器永遠不會被調用。假設問題是由於返回的JSON對象中有完全限定的屬性名稱(即「com.klistret.cmdb.ci.pojo.name」而不是「name」)。

有人用過嗎?

+0

您確定您正確使用ScriptTagProxy嗎?含義 - 服務器是否正確地將JSON包裝在回調函數中? – timdev 2010-12-05 20:47:31

回答

2

我們的工作了(當然,主要是馬修那樣)的評論:

ScriptTagProxy需要服務器來包裝在一個函數調用中的JSON數據,讓您的本地代碼可以訪問它。

,而不是服務器發出類似:

{here:'is data} 

它需要返回

somefunc("{here:'is data'}"); 

這樣的somefunc()您的客戶端implementaiton被調用,可以處理返回的數據。