Чтобы ассинхронно обновить значение переменной в JavaScript, можно воспользоваться классом apex.ajax.ondemand:
/* Сохранить в сессии значение элемента асинхронно */
function saveThisItemAsync(p){
/* создаём пустой вызов к БД - без имени процесса и callback-функции */
var aget = new apex.ajax.ondemand();
/* добавляем нашу переменную-элемент */
aget.ajax.add(p.id, $v(p));
aget._get();
}
Для синхронного обновления можно воспользоваться им же, просто вызвав ajax.get(). :) Вот JS-функция для синхронного обновления значения переменной в сессии:
/* Сохранить в сессии значение элемента */
function saveThisItem(p){
var get = new apex.ajax.ondemand();
get.ajax.add(p.id, $v(p));
get.ajax.get();
}
Если кто-то хочет посмотреть, что там внутри apex.ajax.ondemand находится - пожалуйста:
apex.ajax = {
...
ondemand : function (pWidget,pReturn){
var that = this;
this.ajax = new htmldb_Get(null,$x('pFlowId').value,'APPLICATION_PROCESS='+pWidget,0);
this._get = _get;
this._set = _set;
this._return = !!pReturn?pReturn:_return;
return;
function _get(pValue){
that.ajax.GetAsync(that._return);
}
function _set(pValue){}
function _return(pValue){}
}
}
Таким образом, всё, что можно делать с htmldb_Get, можно делать и с apex.ajax.ondemand. Просто иногда короче. :)
Спасибо за информацию для размышления и написания этого поста kvad на sql.ru: Oracle APEX за этот пост.
Читать далее