Al usar AJAX para la interacción de la información, si la información devuelta por el servidor es relativamente grande, la pantalla de transmisión será más amigable en comparación con la pantalla unificada después de que se complete la transmisión.
Implementación de transmisión
El principio es establecer un temporizador, ver regularmente el estado del objeto AJAX y actualizar el contenido. Si la transmisión se completa, el temporizador se cancelará.
La copia del código es la siguiente:
función AJAX_STREAM (URL, DATA, Elemento) {
var xmlhttp = null;
if (window.xmlhttprequest)
{// Código para IE7, Firefox, Opera, etc.
xmlhttp = new xmlhttprequest ();
}
else if (window.activexObject)
{// Código para IE6, IE5
xmlhttp = new ActiveXObject ("Microsoft.xmlhttp");
}
if (xmlhttp == nulo)
{
alerta ("Su navegador no admite xmlhttp.");
element.val ('Su navegador no admite xmlhttp. Haga clic en el enlace de registro para monitorear el procedimiento');
regresar 0;
}
var xhr = xmlhttp;
xhr.open ('post', url, verdadero);
// Si necesita datos de publicación como formularios HTML, use SetRequestHeader () para agregar encabezados HTTP. Luego especifique los datos que desea enviar en el método send ():
XHR.SetRequestHeader ("Content-type", "Application/X-WWW-form-urlencoded");
XHR.SEND (datos);
temporizador var;
timer = window.setinterval (function () {
if (xhr.readyState == xmlhttprequest.done) {
Window.ClearTimeOut (temporizador);
}
elemento.val (xhr.esponsetext);
}, 1000);
}
Publicar la conversión de datos
Dado que el envío de implementaciones estándar solo puede aceptar los siguientes tipos de entradas, es necesario convertir el objeto de datos que se transfiera en un formato de cadena o formato FormData por adelantado, que no es tan conveniente como jQuery. Sin embargo, no se sabe cómo jQuery puede implementar respuestas de eventos en el medio de la transmisión, por lo que no se puede usar, y puede convertir todos los objetos en JSON.
La copia del código es la siguiente:
nulo send ();
send void (datos de arraybuffer);
envío nulo (datos blob);
nulo envío (datos del documento);
nulo envía (Domstring? Data);
nulo envío (datos de FormData);
El siguiente es el código de conversión. Si el navegador admite FormData, se convertirá, de lo contrario se convertirá en una cadena.
La copia del código es la siguiente:
función AJAX_GENERATE_DATA (JSOBJ) {
var i;
if (window.formdata) {
var data = new FormData ();
para i en jsobj {
data.append (i, jsobj [i]);
}
} demás {
var data = '';
datas var = [];
para i en jsobj {
// para los valores de modo que sea posible y contenido en las cadenas no rompa el formato
value var = encodeuricOponent (jsobj [i]);
dataS.append (i + '=' + valor);
}
data = dataS.Join ('&')
}
console.log (datos);
devolver datos;
}