Я успешно интегрировал dajax в свой проект. Это прекрасно, но ему не хватает некоторых функций, которые могли бы сделать его еще лучше - например. видимый индикатор того, что запрос обрабатывается (темный экран, песочные часы, что угодно). Я нашел несколько мест в dajaxice.js, где я должен перехватить запрос, но это не простой способ. Знаете ли вы о каком-либо простом методе или я должен выбрать жесткий путь - не использовать какую-либо структуру ajax и выполнять всю работу вручную ?Индикатор прогресса в dajax/dajaxice?
ответ
Что-то, как это будет работать (чтобы дать погрузочной Gmail стиль ... сообщение в правом верхнем углу):
function useLoadingMessage(message) {
var loadingMessage;
if (message) loadingMessage = message;
else loadingMessage = "Loading";
Dajaxice.preHook = function() {
var disabledZone = document.getElementById('disabledZone');
if (!disabledZone) {
disabledZone = document.createElement('div');
disabledZone.setAttribute('id', 'disabledZone');
disabledZone.style.position = "absolute";
disabledZone.style.zIndex = "1000";
disabledZone.style.left = "0px";
disabledZone.style.top = "0px";
disabledZone.style.width = "100%";
disabledZone.style.height = "100%";
document.body.appendChild(disabledZone);
var messageZone = document.createElement('div');
messageZone.setAttribute('id', 'messageZone');
messageZone.style.position = "absolute";
messageZone.style.top = "0px";
messageZone.style.right = "0px";
messageZone.style.background = "red";
messageZone.style.color = "white";
messageZone.style.fontFamily = "Arial,Helvetica,sans-serif";
messageZone.style.padding = "4px";
disabledZone.appendChild(messageZone);
var text = document.createTextNode(loadingMessage);
messageZone.appendChild(text);
}
else {
document.getElementById('messageZone').innerHTML = loadingMessage;
disabledZone.style.visibility = 'visible';
}
};
Dajaxice.postHook = function() {
document.getElementById('disabledZone').style.visibility = 'hidden';
};
}
вызов useLoadingMessage()
из вашего яваскрипта document.ready сценария или из OnLoad в вашей тег тела для самого агностика.
Пара писак в dajaxice.core.js:
Line 49 года:
oXMLHttpRequest.onreadystatechange = function() {
if (this.readyState == XMLHttpRequest.DONE) {
if(Dajaxice.postHook) Dajaxice.postHook();
if(this.responseText == Dajaxice.EXCEPTION || !(this.status in Dajaxice.valid_http_responses())){
error_callback();
Line 65 года:
}
if(Dajaxice.preHook) Dajaxice.preHook();
if(method == 'POST'){
oXMLHttpRequest.send(send_data);
}
else{
Javascript все библиотеки агностик, и она должна включать в себя только добавление 2 линии к источнику Dajaxice. Если вы хотите использовать другой элемент загрузки, просто дайте ему id
из disableZone
в свой html и установите visible = hidden
за его css.
Я принял это решение от dwr, которое является dajaxice для Java. У этого есть некоторые другие интересные функции, хотя, как некоторые приличные страницы отладки и прямая загрузка изображения, которые были бы удобны в dajaxice ....;).