Ao usar o AJAX para interação da informação, se as informações retornadas pelo servidor forem relativamente grandes, a tela de streaming será mais amigável em comparação com a tela unificada após a conclusão da transmissão.
Implementação de streaming
O princípio é definir um cronômetro, visualizar regularmente o status do objeto Ajax e atualizar o conteúdo. Se a transmissão for concluída, o timer será cancelado.
A cópia do código é a seguinte:
função ajax_stream (url, dados, 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 == null)
{
alerta ("Seu navegador não suporta xmlHttp.");
element.val ('Seu navegador não suporta xmlHttp. Clique no link de log para monitorar o procedimento.');
retornar 0;
}
var xhr = xmlHttp;
xhr.open ('post', url, verdadeiro);
// Se você precisar de postar dados como os formulários HTML, use o setRequestHeader () para adicionar cabeçalhos HTTP. Em seguida, especifique os dados que você deseja enviar no método send ():
xhr.setRequestHeader ("Content-Type", "Application/X-Www-Form-Urlencoded");
xhr.send (dados);
Var Timer;
Timer = window.setInterval (function () {
if (xhr.readyState == xmlhttprequest.done) {
window.cleartimeout (timer);
}
element.Val (xhr.ProSeText);
}, 1000);
}
Pós -conversão de dados
Como as implementações padrão de envio podem aceitar apenas os seguintes tipos de entradas, é necessário converter o objeto de dados a ser transmitido para um formato String ou FormData com antecedência, o que não é tão conveniente quanto o jQuery. No entanto, não se sabe como o jQuery pode implementar respostas de eventos no meio da transmissão, por isso não pode ser usado e você pode converter todos os objetos em JSON.
A cópia do código é a seguinte:
void send ();
void send (dados do ArrayBuffer);
void send (dados do blob);
void send (dados do documento);
void send (DomString? Data);
void send (dados do formData);
A seguir, o código de conversão. Se o navegador suportar o FormData, ele será convertido, caso contrário, será convertido em uma string.
A cópia do código é a seguinte:
função ajax_geneate_data (jsobj) {
var i;
if (window.formData) {
var dados = new FormData ();
para i em jsobj {
data.append (i, jsobj [i]);
}
} outro {
var dados = '';
varas var = [];
para i em jsobj {
// para os valores para que possam e contidos nas cordas não quebrem o formato
var value = codeuricomponent (jsobj [i]);
dados.append (i + '=' + valor);
}
dados = dados.Join ('&')
}
console.log (dados);
retornar dados;
}