2017-10-03 6 views
0

Je souhaite appeler des données JSON autant que la quantité de données dans le magasin. Voici le code:Format de données incorrect pour la méthode loadData du magasin ExtJS

storeASF.each(function(stores) { 
    var trano = stores.data['arf_no']; 
    Ext.Ajax.request({ 
     results: 0, 
     url: '/default/home/getdataforeditasf/data2/'+trano+'/id/'+id, 
     method:'POST', 
     success: function(result, request){ 
      var returnData = Ext.util.JSON.decode(result.responseText); 
      arraydata.push(returnData); 

      Ext.getCmp('save-list').enable(); 
      Ext.getCmp('cancel-list').enable(); 

     }, 
     failure:function(action){ 
      if(action.failureType == 'server'){ 
       obj = Ext.util.JSON.decode(action.response.responseText); 
       Ext.Msg.alert('Error!', obj.errors.reason); 
      }else{ 
       Ext.Msg.alert('Warning!', 'Server is unreachable : ' + action.response.responseText); 
      } 
     } 
    }); 
    id++; 
}); 
storeARF.loadData(arraydata); 

StoreASF contient des données [arf_no] qui seront utilisés en tant que paramètre à Ajax url demande. StoreASF peut contenir plus d'un ensemble du magasin d'objets, donc la mise en boucle est possible. Pour chaque donnée JSON appelée de la requête, elle sera placée dans les données du tableau, et une fois la boucle terminée, je l'enregistre dans storeARF avec la méthode loadData.

Le problème est que mon format de données est erroné car loadData ne peut lire que les données de type JSON. J'ai déjà essayé JSON stringify et parse, mais je n'ai pas pu répliquer le format de données. Toute suggestion comment faire ceci? Je vous remercie.

Répondre

0

Plutôt que d'utiliser Ext.util.Json.decode(), normaliser les données dans la méthode success() en utilisant votre propre logique. Par exemple:

success: function (response) { 
      console.log(response); 
      var myData = []; 
      Ext.Array.forEach(response.data, function (item) { 
       myData.push({ 
        name: item.name, 
        email: item.email, 
        phone: item.phone 
       }); 
      }); 
      store.load(); 
}