2010-08-03 2 views
0

Я делаю последовательность вызовов Ajax с использованием модуля Ext.Direct. Я хочу сохранить некоторые данные при каждом вызове, а затем сопоставить каждое возвращаемое значение с правильным вызовом.Ext.Direct: сопоставление возвращаемых значений с вызовами

В вызове сервера Ext предоставляет свойство tid (предположительный «идентификатор транзакции») в пакете JSON, в котором он использует возвращаемые значения соответствия для вызовов. Проблема в том, что не существует документально зарегистрированного пути для моего клиентского Javascript для захвата tid исходящего вызова.

Этот метод работает, но использует недокументированное свойство Ext.Direct.TID. Если предположить, что my.namespace.my_action.my_method является API вызова Ext.Direct, который был настроен правильно:

// 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 в параметры и верните их с каждым ответом.

Смежные вопросы