2013-05-25 3 views
0

J'ai un appel AJAX dans un script ExtJS, mais je ne suis pas sûr de savoir comment récupérer l'objet JSON retourné et l'assigner à une variable à utiliser sur la page. Je prends fondamentalement un script extJS codé en dur et je mets JSON de la base de données. Voici ce que je dois faireExtJS AJAX a renvoyé l'objet JSON

Obtenir une variable de cet appel AJAX:

Ext.onReady(function() { 
Ext.Ajax.request({ 
url: '/xxx/clienttool/components/Client-Tool.cfc?method=getResources&returnformat=json', 
params: { 
accountID: 463 
}, 
success: function(response){ 
var text = response.responseText; 
// process server response here 
} 

});

et l'affecter si ces valeurs ne sont pas hardcoded:

// Store holding all the resources 
     resourceStore  : Ext.create("Sch.data.ResourceStore", { 
      model : 'Sch.model.Resource', 
      data : [ 
       {Id : 'MadMike', Name : 'Mike'}, 
       {Id : 'JakeTheSnake', Name : 'Jake'}, 
       {Id : 'KingFu', Name : 'King'}, 
       {Id : 'BeerBrian', Name : 'Brian'}, 
       {Id : 'LindaAnderson', Name : 'Linda'}, 
       {Id : 'DonJohnson', Name : 'Don'}, 
       {Id : 'KarenJohnson', Name : 'Karen'}, 
       {Id : 'DougHendricks', Name : 'Doug'}, 
       {Id : 'PeterPan', Name : 'Peter'} 
      ] 
     }), 

est ici la chose:

Ext.onReady(function() { 

    App.SchedulerDemo.init(); 
}); 

App.SchedulerDemo = { 

// Initialize application 
init : function() { 
    Ext.define('Event', { 
     extend : 'Sch.model.Event', 
     fields : [ 
      {name : 'Title'}, 
      {name : 'Type'} 
     ] 
    }); 


    //ajax call to get resources for this accountID 
    Ext.Ajax.request({ 
     url: '/xxxx/clienttool/components/Client-Tool.cfc?method=getResources&returnformat=json', 
     params: { 
     accountID: 463 
     }, 
     success: function(response){ 
      getResources = response.responseText; 
     // process server response here 
     } 
    }); 
    //alert(getResources); 

    var zoneStore = Ext.create('Ext.data.JsonStore', { 
     model : 'Sch.model.Range', 
     data : [ 
      { 
       // Nice 2 hour lunch 
       StartDate : new Date(2011, 11, 9, 12), 
       EndDate : new Date(2011, 11, 9, 14), 
       Cls  : 'lunch-style' 
      } 
     ] 
    }); 

    var sched = Ext.create("Sch.panel.SchedulerGrid", { 
     height     : ExampleDefaults.height, 
     width     : ExampleDefaults.width, 
     rowHeight    : 40, 
     eventBarTextField  : 'Title', 
     viewPreset    : 'hourAndDay', 
     startDate    : new Date(2011, 11, 9, 7), 
     endDate     : new Date(2011, 11, 9, 20), 
     orientation    : 'vertical', 
     constrainDragToResource : false, 
     eventBarIconClsField : 'Type', 
     snapToIncrement   : true, 
     //constrainDragToResource : true, 
     eventResizeHandles  : 'end', 

     viewConfig : { 
      // Experimental for CSS3 enabled browsers only 
      eventAnimations : true 
     }, 

     // Store holding all the resources 
     resourceStore  : Ext.create("Sch.data.ResourceStore", { 
      model : 'Sch.model.Resource', 
      data : 
      [ 
       {Id : 'MadMike', Name : 'Mike'}, 
       {Id : 'JakeTheSnake', Name : 'Jake'}, 
       {Id : 'KingFu', Name : 'King'}, 
       {Id : 'BeerBrian', Name : 'Brian'}, 
       {Id : 'LindaAnderson', Name : 'Linda'}, 
       {Id : 'DonJohnson', Name : 'Don'}, 
       {Id : 'KarenJohnson', Name : 'Karen'}, 
       {Id : 'DougHendricks', Name : 'Doug'}, 
       {Id : 'PeterPan', Name : 'Peter'} 
      ] 

     }), 

Répondre

0

Si le seul but de la requête AJAX est de récupérer des données pour le magasin de votre grille , Je l'abandonnerais complètement et définirais simplement un AJAX proxy sur votre magasin. Il n'atteindra pas seulement le même objectif initial (par exemple, obtenir des données pour votre magasin), mais traitera également la création d'instances de modèle de vos données et la liaison du magasin à votre grille.

Je suggère de vérifier le docs for the Store, ainsi que le grid examples dans la documentation.