2013-04-09 98 views
0

我是sencha touch2的新手,我使用Ajax Post Request进行代理,并且能够获取Json数据。但我的成功和失败功能没有被调用?任何想法我怎么能做到这一点? 这里是我的模型供您参考:Sencha touch2:Ajax发送请求成功和失败的函数没有被调用?

Ext.define('TestApp.model.ModelList', { 
    extend: 'Ext.data.Model', 
    xtype:'modelList', 
    config: { 
     fields:['work'], 

     proxy:{ 
      type:'ajax', 
      method: 'POST', 

      url:'http://localhost:9090/apps/works', 
      callbackKey: 'callback', 
      actionMethods: { 
       create : 'POST', 
       read : 'POST', // by default GET 
       update : 'POST', 
       destroy: 'POST' 
      }, 
      headers: { 
       'Content-Type': 'application/xml', 
       'Accept':'application/json' 

      }, 
      callback: function(options, success, response) { 
       console.log('999999999'+response.responseText);// not getting called 
      }, 
      success: function(response) { 
       console.log('success++++');// not getting called 
      }, 
      failure: function(response) { 
       console.log('failure++++');// not getting called 
      }, 

      reader: 
      { 
       type:'json' 
      } 
     } 
    } 
}); 
+0

使用Chrome开发者工具。打开网络选项卡。重新加载您的网页或激发您的请求。看看网络流量。怎么了? – 2013-04-10 19:20:55

+0

服务器返回什么? – Izhaki 2013-04-10 21:25:23

+1

是下面的答案有帮助吗? – dbrin 2013-05-09 20:49:58

回答

0

代理本身没有定义回调。 执行的操作确实如此。因此,例如Model.load(1,{...})可以在配置PARAMS像这样指定回调函数:

MyApp.User.load(10, { 
    scope: this, 
    failure: function(record, operation) { 
     //do something if the load failed 
    }, 
    success: function(record, operation) { 
     //do something if the load succeeded 
    }, 
    callback: function(record, operation) { 
     //do something whether the load succeeded or failed 
    } 
}); 

更多的信息在这里:http://docs.sencha.com/touch/2-1/#!/api/Ext.data.Model 或在这里:http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Model-static-method-load

另外,还要确保你,你需要Ajax代理,而不是JSONP代理。在Ajax代理上通常不需要指定主机和端口,因为它应该与应用主机相同。如果不是这种情况,那么你需要JSONP代理。

+0

你能帮我一下,我可以在哪里写上面的代码? – chipmunk 2013-04-12 13:44:34

+0

上面的代码在控制器类中最合适。 – dbrin 2013-04-12 18:14:36

相关问题