Bei Verwendung von AJAX zur Informationsinteraktion ist das Streaming -Display im Vergleich zur Unified Display nach Abschluss des Getriebes freundlicher, wenn die vom Server zurückgegebenen Informationen relativ groß sind.
Streaming -Implementierung
Das Prinzip besteht darin, einen Timer festzulegen, den Status des AJAX -Objekts regelmäßig anzusehen und den Inhalt zu aktualisieren. Wenn die Übertragung abgeschlossen ist, wird der Timer abgesagt.
Die Codekopie lautet wie folgt:
Funktion ajax_stream (URL, Daten, Element) {
var xmlhttp = null;
if (window.xmlhttprequest)
{// Code für IE7, Firefox, Opera usw.
xmlhttp = new xmlhttprequest ();
}
sonst if (window.activeXObject)
{// Code für IE6, IE5
xmlhttp = new ActiveXObject ("microsoft.xmlhttp");
}
if (xmlhttp == null)
{
ALERT ("Ihr Browser unterstützt XMLHTTP nicht.");
element.val ('Ihr Browser unterstützt XMLHTTP nicht. Klicken Sie auf den Link zum Protokoll, um die Prozedur zu überwachen.');
Rückkehr 0;
}
var xhr = xmlhttp;
xhr.open ('post', url, wahr);
// Wenn Sie Postdaten wie HTML -Formulare benötigen, verwenden Sie setRequestheader (), um HTTP -Header hinzuzufügen. Geben Sie dann die Daten an, die Sie in der Methode Send () senden möchten:
xhr.setRequestheader ("Content-Typ", "Anwendung/X-Www-Form-Urlencoded");
Xhr.Send (Daten);
var Timer;
timer = window.setinterval (function () {
if (xhr.readystate == xmlhttprequest.done) {
window.clearTimeout (Timer);
}
element.val (xhr.responsetext);
}, 1000);
}
Postdatenkonvertierung
Da Senden von Standardimplementierungen nur die folgenden Arten von Eingängen akzeptieren können, müssen das Datenobjekt im Voraus in ein String- oder Formdata -Format umwandeln, was nicht so bequem wie JQuery ist. Es ist jedoch nicht bekannt, wie JQuery Ereignisantworten in der Mitte der Übertragung implementieren kann, sodass es nicht verwendet werden kann, und Sie können alle Objekte in JSON umwandeln.
Die Codekopie lautet wie folgt:
void send ();
void send (ArrayBuffer -Daten);
void send (Blobendaten);
void send (Dokumentdaten);
void send (domstring? data);
void send (FormData -Daten);
Das Folgende ist der Conversion -Code. Wenn der Browser FormData unterstützt, wird er konvertiert, andernfalls wird er in eine Zeichenfolge konvertiert.
Die Codekopie lautet wie folgt:
Funktion ajax_generate_data (jsobj) {
var i;
if (window.FormData) {
var data = new FormData ();
denn ich in jsobj {
Data.Append (i, jsobj [i]);
}
} anders {
var data = '';
var datas = [];
denn ich in jsobj {
// für die Werte, so wie möglich und in den Zeichenfolgen enthalten
var value = cododeuricomponent (JSOBJ [i]);
datas.Append (i + '=' + value);
}
Data = datas.join ('&')
}
console.log (Daten);
Daten zurückgeben;
}