2015-04-06 88 views
0

我有一個店:ExtJS的3.4回調函數

var store = new Ext.data.JsonStore({ 
     root: 'list', 
     url: '../myProject/getData.ajax', 
     baseParams:{ 
      date:'', 
     }, 
     fields: rec, 
     totalProperty:'totalCount', 
     pruneModifiedRecords:true, 
     autoLoad : false, 
     listeners:{ 
      load:function(){ 
       globalMask.hide(); 
      } 
     } 
    }); 

而且鍵後按我加載存儲與功能:

function storeLoad(){ 
    store.baseParams = { 
      date:date.getRawValue(), 
     }, 
    store.load({ 
     params :{start:0, limit:100}, 
     callback: function (response,options,success) { 
        if (success){ 
         var res = Ext.util.JSON.decode(response.responseText); 
         if(res.msj != null){ 
         Ext.MessageBox.alert("Sonuç",res.msj); 

         } 
        } else{ 
         Ext.MessageBox.alert("Error","Error message : "+response.statusText+". Try again later!!! "); 
        } 
        console.log("response:"+response); 
        console.log("op:"+options); 
        console.log("success:"+success); 
        console.log("res:"+res); 
        console.log("res.mesaj:"+res.msj); 
      } 

    }); 
} 

並在此之後在控制檯的回報是這樣的:

響應:[對象對象],[對象對象],[對象對象],[對象 對象],[對象對象],[對象對象],[對象對象ect],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] [Object Object] ,[對象對象],[對象對象],[對象對象],[對象 對象],[對象對象],[對象對象],[對象對象],[對象 對象],[對象對象]對象],[對象對象],[對象 對象],[對象對象],[對象對象],[對象對象],[對象 對象],[對象對象],[對象對象],[對象對象] [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object 對象],[對象對象],[對象對象],[對象對象],[對象 對象],[對象對象],[對象對象],[對象對象],[對象 對象],[ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object對象],[對象 對象],[對象對象],[對象對象],[對象對象],[對象 對象],[對象對象],[對象對象],[對象對象],[對象 對象] ,[對象對象],[對象對象],[對象對象],[對象 對象],[對象對象],[對象對象],[對象對象],[對象 對象],[對象對象]對象],[對象對象],[對象 對象],[對象對象],[對象對象ect],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] [對象 對象]

運算:[對象的對象]

成功:真

RES:

res.msj:未定義

我怎樣才能手這個?爲什麼無法解碼響應?我想在成功後加載商店,但商店加載本身。如何使用Callback成功和失敗? 存儲根是真實的,它加載但成功或失敗後無法加載它?

+0

從服務器獲得的實際JSON響應是什麼? – Scriptable 2015-04-06 13:07:08

+0

帶有'list'鍵的json數組。 [「list」:[all data],「success」:true/false,「totalCount」:110,「msj」:「完成/錯誤」] – ROOT 2015-04-06 13:25:51

+0

嘗試通過http://jsonlint.com運行您的JSON resposne/ – Scriptable 2015-04-06 13:53:37

回答

0

回調函數中的響應參數不是來自服務器的json響應。這是一組加載記錄,查看documentation

+0

如果不是json響應,如何正確加載網格行?響應是一個JSON數組,我確信。響應是:[「列表」:[所有數據],「成功」:真/假,「totalCount」:110,「msj」:「完成/錯誤」] – ROOT 2015-04-07 10:49:22

+0

讀取器解碼JSON並在商店中生成數據,回調函數接收這些數據。你想在回調函數中做什麼。 – rangelovg 2015-04-07 14:09:03

+0

我寫上面的代碼。我想在回調接收到的數據之後加載商店,並向用戶發送一些我無法解碼的消息。 – ROOT 2015-04-07 21:12:28

0

在store的閱讀器中添加Ext.data.DataReader.messageProperty =「msj」,查看documentation的第一個示例,並在store的偵聽器「load」中添加alert。

0

請勿將console.log與字符串和對象一起使用。嘗試控制檯。日誌(響應)而不是console.log(「response:」+ response);

試試這個在您的控制檯登錄你就會明白:

執行:

 

    var test = {a:1, b:2, c:3}; 

執行:

 

    console.log(test); 

輸出:

 

    Object {a: 1, b: 2, c: 3} 

執行:

 

console.log("response" + test); 

輸出:

 

response[object Object] 

如果你這樣做,你將能夠瀏覽的對象。也許你的代碼已經正確。