2015-04-06 104 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] 

如果你这样做,你将能够浏览的对象。也许你的代码已经正确。