2010-12-06 6 views
1

Je suis en train de lire la chaîne suivante dans un combobox ExtJS:Lire chaîne JSON dans ExtJS ComboBox

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

EDIT: Je pense qu'il ya un problème avec la façon dont ma source de données JSON formate la chaîne parce que je n'ai pas de racine ici. Est-ce important d'avoir un élément racine?

Voici mon code 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' 
    }); 

});

Malheureusement, je n'arrive pas à faire fonctionner ça. :(S'il vous plaît aider!

Je suis un n00b à JavaScript.

Répondre

2

Oui, vous aurez besoin d'une racine. Voir la documentation pour JsonReader, l'option de configuration 'root' est nécessaire.

En outre: si vous n'effectuez pas de récupération de données entre domaines, vous ne devriez probablement pas utiliser ScriptTagProxy.StyleTagProxy requiert que le serveur encapsule les données codées json dans un appel de fonction. même serveur, utilisez plutôt HttpProxy

+0

Merci 'timdev' Maintenant, je suis curieux de savoir comment ajouter un élément racine à mon code JSON chaîne? J'utilise PHP et tout ce que je fais est de prendre un tableau de la base de données et le passer par json_encode(). Comment pourrais-je ajouter un élément racine Json? –

+0

peu importe que j'ai eu la réponse à ma requête ici: 'http: //www.sencha.com/learn/Tutorial: Creating_JSON_Data_in_PHP' Merci' timdev' –