Ext.Direct:将返回值与调用匹配

时间:2010-08-03 21:07:32

标签: javascript ajax extjs

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

在服务器调用中,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的公共界面?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在您提出要求时可能不存在,但万一其他人想知道:

当您进行ExtDirect调用时,您将传递参数,回调,范围和选项。

将call_data放入选项中,并在每次回复时将其恢复。