2017-10-03 22 views
0

JSONデータをストア内のデータ量だけ呼び出したいとします。ストアのloadDataメソッドのデータ形式が正しくありません。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には、AjaxリクエストURLのパラメータとして使用されるデータ[arf_no]が含まれています。 StoreASFには複数のオブジェクトストアセットが含まれている可能性があるため、ループすることができます。要求されたすべてのJSONデータは配列データに格納され、ループが完了した後、loadDataメソッドを使用してstoreARFに保存されます。

loadDataはJSON型のデータしか読み込めないため、データ形式が正しくないという問題があります。私はすでにJSONをストライピングして解析しますが、データフォーマットを複製することはできませんでした。任意の提案どのようにこれを行うには?ありがとうございました。

答えて

0

よりもむしろExt.util.Json.decode()を使用して、独自のロジックを使用してsuccess()方法でデータを正規化します。例:

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(); 
}