Sie können Daten auf Ihren Bediener mit Plätzchen übertragen, aber jede mögliche Implementierung, die sie verwendet, ist streng begrenzt. Plätzchen haben eine maximale Größe von 4k, und jedes Gebiet kann nur 20 von ihnen einstellen, das bedeutet, daß jeder Antrag Größe-begrenzt sein wird. Plätzchen-gegründetes AJAX ist am nützlichsten, wenn Ihr Aufstellungsort für ihn bestimmt ist, weil seine Beschränkungen es hart, es als Rückfall zu verwenden bilden. Die grundlegende Funktionalität wird von der Einstellung eines Plätzchens zur Verfügung gestellt und lädt ein Bild und dann Wahl auf einem Abstand bei der Aufwartung, daß die Antwort erscheint. Die Implementierung ist einfach; um etwas außer dem Alarmieren des Inhalts des Resultats zu tun, stellten Sie gerade Ihre eigene kundenspezifische onComplete Fallzufuhr ein. Ein Beispiel, in dem der Bediener den Eingang und die Zahl Zeiten es zurückbringt, ist wird gezeigt in den folgenden 2 Auflistungen benannt worden. Javascript des Beispiels wird in Auflistung 1 gezeigt und der PHP Code, der das Plätzchen liest und dann eine Antwort einstellt, wird in Auflistung 2 gezeigt.
Registrierung Von von 1 Plätzchen-Angetriebenem AJAX
| 1 < HTML > 2 < Kopf > 3 < title>Cookie Test</title > 4 5 < Index type="text/javascript" > 6 Funktion CookieRequest() {} 7 CookieRequest.prototype = { Abstand 8: 500. 9 Versuche: 5. attemptCounter 10: 0. Anruf 11: function(url, payload) { 12 var d = neues Date(); 13 var I = neues Image(); 14 this.setCookie('CR', payload); 15 i.src = URL + '?u = ' + d.getTime(); 16 var Selbst = dieses; 17 this.timerId = setTimeout(function() 18 {self.read(); }, this.interval); 19 }, 20 gelesen: function() { 21 this.attemptCounter++; 22 //Überprüfung auf Daten 23 var Daten = this.getCookie('CR '); 24 wenn (Daten! = falsch) { 25 this.attemptCounter = 0; 26 this.onComplete(data); 27 Rückhol richten aus; 28 } 29 30 //Überprüfung auf Störung 31 wenn (this.attemptCounter > this.attempts) { 32 this.onError(); 33 } sonst { 34 var Selbst = dieses; 35 this.timerId = setTimeout(function() {self.read(); }, 6 this.interval); 37 } 38 }, onComplete 39: function(result) { alert(result) 40 41 }, onError 42: function() { 43 alert('Request Zeit festgesetzt aus '); 44 }, setCookie 45: function(name, Wert, läuft) ab { 46 document.cookie = Name + "=" + escape(value) + 47 ((läuft ab)? "; läuft = "+ ab 48 expires.toGMTString(): ""); 49 }, getCookie 50: function(name) { 51 var docCookie = document.cookie.split("; "); 52 für (var i=0; I < docCookie.length; i++){ 53 var Stück = docCookie[i].split("="); 54 wenn == (piece[0 ] Name) { 55 Rückholunescape(String(piece[1 ]). replace(/\+/g, "")); 56 } 57 } 58 Rückholfalsche; 59 } 60} 61 Funktion test() { 62 var Cr = neues CookieRequest(); 63 cr.call('cookie.php', 'Some Beispiel-Daten '); 64} 65 </Index > 66 </Kopf > 67 < Körper > 68 < ein href='javascript:test()'>Test</a > 69 </Körper > |
|
|
In Auflistung 1, wird die Plätzchen-angetriebene AJAX Funktionalität innerhalb der Javascriptkategorie CookieRequest aufgewickelt. Anträge zum Bediener werden mit der Anrufmethode (Linien 11-19) gebildet. Die Anrufmethode nimmt ein URL, zu dem den Antrag senden. Sie nimmt auch eine Nutzlast (den Inhalt, den wir zum Bediener schicken möchten), die in das Antragplätzchen gesendet wird. Die Methode verwendet dann die setCookie Methode, um ein Plätzchen einzustellen genannt CR (Linie 14); sie dann verursacht einen neuen Bildgegenstand und stellt sein src auf das erbetene URL ein (Linie 15). Die Methode beendet, indem sie einen Timer beginnt, der die gelesene Methode alle 500 Millisekunden laufen läßt.
Die gelesene Methode (Linien 2038) überprüft auf das Vorhandensein des CR-Plätzchens (Linien 2324). Wenn sie besteht, werden die Daten in ihr zur onComplete Methode (Linie 26) übermittelt. Wenn die Daten nicht anwesend sind, überprüfen wir auf Störungen; dieses wird getan, indem man die Zahl Überprüfungen vergleicht, die wir gegen die maximalen Überprüfungen durchgeführt haben, die in die Versuche Eigenschaft (Linie 31) eingestellt werden. Wenn es eine Störung gibt, wird die onError Methode benannt (Linie 32). Wenn keine Störung anwesend ist, beginnen wir einen anderen Timer, um die folgende Überprüfung (Linien 34-35) zu tun.
Linien 39-44 enthalten Methoden, die Sie überlaufen, wenn Sie die Kategorie verwenden. Die onComplete Methode wird benannt, wenn Daten erfolgreich geladen werden. Dieses ist das Äquivalent der Wiederholungsbesuch Eigenschaft in der HttpClient Kategorie. Die onError Methode wird benannt, wenn der Antrag nicht erfolgreich durchführt; selbstverständlich konnten Sie dieses als Alarm lassen, aber in den meisten Fällen wünschen Sie eine verständlichere Fehlermeldung zu Ihren Benutzern zur Verfügung stellen oder sogar den Antrag wieder versuchen.
Die CookieRequest Kategorie enthält auch Helfermethoden für das Beschäftigen das Erhalten und einstellenplätzchen setCookie (Linien 45-49) Arbeiten, indem sie den Wert von document.cookie auf a einstellten, urlencoded Zeichenkette im Format Plätzchen name=value. getCookie (Linien 50-59) der Arbeiten, indem sie document.cookie in ein Teil für jedes Plätzchen aufspalteten (die Plätzchen werden durch ";" getrennt) und dann, schlingend über diesen Teilen, die nach einem Plätzchen mit dem spezifizierten Namen suchen. Wenn ein zusammenpassender Name gefunden wird, wird der Wert zurückgebracht; andernfalls falsch wird zurückgegangen.
Die PHP Seite, die mit Listing1 benutzt wird, wird in Listing2 gezeigt. Sie wird als das URL in der Anrufmethode verwendet und die Nutzlast verarbeitet, die eingestellt wird; sie stellt dann eine Antwort für gelesen zum Zupacken ein.
Registrierung 2 - PHP Bediener-Seite für die Behandlung eines Antrags des Plätzchen-AJAX
| 1 <?php session_start() 2; 3 wenn (!isset($_SESSION['i ' ])) { 4 $_session['i ' ] = 0; 5 } 6 wenn (isset($_COOKIE['CR ' ])) { 7 $_session['i']++; 8 setcookie('CR', 'Server reagiert: ' $_SESSION['i '].', 9 ' $_COOKIE['CR ' ]); 10} 11? > |
Dieser PHP Code liefert die grundlegende Funktionalität, die benötigt wird, um auf Plätzchen-gegründete AJAX Anträge einzuwirken. Er verwendet PHP Lernabschnitte, um einen Kostenzähler und Stufensprünge zu speichern es, während jeder Antrag gebildet wird. Da Sie diesen Code verlängern, konnten Sie unterschiedliche PHP Seiten benutzen, um zu entscheiden, welcher Tätigkeit zum durchzuführen oder Sie diese Informationen im Plätzchen einschließen konnten, das vom Klienten gesendet wird. Linien grundlegende Lernabschnitteinstellung des 2-5 Handgriffs, den Kostenzähler bis 0 einstellend, wenn dieses der erste Anruf ist. Linien 6-10 Handgriff die Überprüfung des Klient Plätzchens und das Senden der Antwort. Dieses wird getan, indem man ein Plätzchen einstellt, das dann mit der Antwort (Linie 8-9) gesendet wird. Wenn Sie große Bedienerantworten anfassen möchten, würden Sie Code einschließen müssen, um die Daten unter mehrfachen Plätzchen aufzuspalten.
|
|