XPages: получить содержимое AJAX-вызова this._partialRefresh?

Я делаю частичное обновление XPage (Domino 8.5.1), но мне нужно получить содержимое ответа.

Причина в том, что в IE8 (иногда) возникает проблема, когда частично обновленный HTML не отображается. Я вижу, что ответ правильный, но DOM не обновляется.

Это легко исправить:

div.innerHTML = div.innerHTML

Но для того, чтобы применить это, мне нужен контент, чтобы я мог вставить его в первую очередь.

Итак, можно ли получить возвращенный HTML из частичного обновления? Или есть другой способ решить это?


person jBoive    schedule 19.03.2012    source источник


Ответы (2)


Чтобы перехватить частичное обновление, вы можете добавить этот код CSJS:

// --- hijack dojo XHR calls
dojo._xhr = dojo.xhr; 
var loadOld;

function hijacked( response, ioArgs ){
   alert( response ); // change code here to do whatever you want. // 
   loadOld( response, ioArgs ); // call the original function 
}

dojo.xhr = function( mode, args, bool ){
    loadOld = args["load"];
    args["load"] = hijacked;
    dojo._xhr( mode, args, bool );
}

Просто измените функцию «угнали», чтобы она соответствовала вашим требованиям.

Надеюсь это поможет

Свен

Изменить: метод "hijacked" выполняется ДО того, как изменения в DOM будут применены (и до события OnComplete).

person Sven Hasselbach    schedule 19.03.2012
comment
Да, я думаю, это то, что я искал, поскольку встроенная функция не дает возможности подключиться к ответу. - person jBoive; 28.03.2012

Вы можете инициировать частичное обновление как событие на стороне клиента:

XSP.partialRefreshGet("#{id:targetId}", {
    onComplete: function(responseData) {
        // examine the response content
    }
});

В функцию onComplete будет передан ответ от сервера, и вы сможете проанализировать или иным образом ответить на данные внутри этой функции.

person Tim Tripcony    schedule 19.03.2012
comment
Протестировано в другом случае, когда я хочу сохранить ответ на конкретный запрос. Но responseData всегда не определен. Любые идеи? Спасибо! /Дж - person jBoive; 23.08.2012