2010-12-06 22 views
1

我想讀一個ExtJS組合框下面的字符串:閱讀JSON字符串在ExtJS的組合框

[ 
    {"id":"1","company_name":"company a"},  
    {"id":"2","company_name":"company b"} 
] 

編輯:我認爲有一些問題,我的JSON數據源被格式化的方式字符串,因爲我沒有任何根。有一個根元素很重要嗎?

這裏是我的Ext JS代碼:

<script type="text/javascript"> 
Ext.onReady(function() { 

    Ext.QuickTips.init(); 

    var ds = new Ext.data.Store({ 
     proxy: new Ext.data.ScriptTagProxy({ 
      url: 'http://somesite.com/someFile.php' 
     }), 
     reader: new Ext.data.JsonReader({}, 
     [ 
      {name: 'id', mapping: 'id'}, 
      {name: 'company_name', mapping: 'company_name'}, 
     ] 
     ) 
    }); 


    var search = new Ext.form.ComboBox({ 
     store  : ds, 
     fieldLabel : 'Query string', 
     displayField : 'company_name', 
     typeAhead : true, 
     loadingText : 'Searching...', 
     pageSize  : 5, 
     renderTo  : Ext.getBody(), 
     width  : 200, 
     mode: 'remote' 
    }); 

});

但不幸的是,我無法得到這個工作。 :(請幫助!

我在JavaScript中的n00b。

回答

2

是的,你需要一個根。見JsonReader的文檔, '根' 配置選項需要

另外:如果你沒有進行跨域數據提取,你可能不應該使用ScriptTagProxy。ScriptTagProxy要求服務器在一個函數調用中包裝json編碼的數據,如果你只是回調你的相同的服務器,使用HttpProxy代替

+0

感謝`timdev`。現在,我很好奇我怎麼能添加一個根元素到我的JSON編碼串?我使用PHP,我所做的就是從數據庫中取出一個數組,並通過json_encode()傳遞它。我將如何去添加一個Json根元素? – 2010-12-06 22:08:12