2010-08-03 94 views
0

我正在使用Ext.Direct模块进行一系列Ajax调用。我想在每次拨打电话时保存一些数据,然后将每个返回值与正确的呼叫进行匹配。Ext.Direct:将返回值与调用匹配

在服务器调用中,Ext在JSON数据包中提供tid属性(可预设的“事务标识符”),它使用匹配返回值来调用。问题是,似乎没有任何记录方式为我的客户端JavaScript捕获tid的传出呼叫。

以下方法有效,但它使用未记录的Ext.Direct.TID属性。假设my.namespace.my_action.my_method是已被正确配置的Ext.Direct API调用:

// Set up a global object in which to store data about pending calls 
pendingCalls = {}; 

. 
. 
. 

// Make a call to the server-side routine, and queue the data 
my.namespace.my_action.my_method(call_data); 
pendingCalls[ Ext.Direct.TID ] = call_data; 

. 
. 
. 
//The handler of the Ext.direct.Provider's "data" event 
onData = function(provider, data) { 
    if data.type == "rpc" { 
     // Recover the original call_data 
     call_data = pendingCalls[ data.tid ]; 

     // Do something with call_data and data.result 
    } 
} 

我不喜欢使用Ext.Direct类的私有内部。使用Ext.Direct的公共接口有没有官方的方式来做到这一点?

回答

0

我在问题中发布的解决方案的工作原理,即使它没有记录。而且,由于没有人公布另一种方式,我会坚持下去。

0

它可能没有你问的时候存在,但如果任何人想知道:

当您的ExtDirect电话,你传递参数,回调,范围和选择。

将您的call_data放入选项中,并在每个响应中将其取回。