Estoy preparando un script para mostrar ventanas de mensajes que permite tanto texto simple, HTML, así como cargar archivos de texto externos con AJAX.
El script hace muy bien el trabajo, pero vi que faltaba crear una alerta si el archivo a cargar no era encontrado, así que aplique lo siguiente:
Código HTML:
if (xh.status == 400) { document.body.removeChild( ldn ); dt['texto'] = '<h3 style="margin:0;padding:0;font-size:20px;line-height:20px;">showMessage[ERROR]</h3><br/>El archivo con la url "' + dt['url'] + '" no fué encontrado. Favor de revisar.'; dt['ancho'] = 300; ths.showLayer (dt); return; }; if (xh.readyState == 4 && xh.status == 200) { document.body.removeChild( ldn ); dt['texto'] = xh.responseText; ths.showLayer (dt); };
Esto es el código completo de la parte que carga el AJAX:
Código HTML:
showMessage.prototype.message = function (dt) { var ths = this; // if (dt.texto && !dt.url) { ths.showLayer (dt); // } else if (!dt.texto && dt.url) { var ldn = document.createElement ('div'); ldn.className = 'messageBox_loading'; ldn.style.position = 'fixed'; document.body.appendChild (ldn); ldn.style.left = ((ths.winWH('w') - ldn.offsetWidth) / 2) + 'px'; ldn.style.top = ((ths.winWH('h') - ldn.offsetHeight) / 2) + 'px'; // var xh = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); xh.open('GET',dt['url'],false); xh.onreadystatechange = function () { if (xh.status == 400) { document.body.removeChild( ldn ); dt['texto'] = '<h3 style="margin:0;padding:0;font-size:20px;line-height:20px;">showMessage[ERROR]</h3><br/>El archivo con la url "' + dt['url'] + '" no fué encontrado. Favor de revisar.'; dt['ancho'] = 300; ths.showLayer (dt); return; }; if (xh.readyState == 4 && xh.status == 200) { document.body.removeChild( ldn ); dt['texto'] = xh.responseText; ths.showLayer (dt); }; }; xh.send(''); // } else if (dt.texto && dt.url) { dt['texto'] = '<h3 style="margin:0;padding:0;font-size:20px;line-height:20px;">showMessage[ERROR]</h3><br/>Debe especificar sólo "url" o "texto" para el contenido del mensaje, no ambos.'; dt['ancho'] = 300; ths.showLayer (dt); }; };