Vous pouvez transférer des données à votre serveur en utilisant des biscuits, mais n'importe quelle exécution les employant sera sévèrement limitée. Les biscuits ont une taille maximum de 4k, et chaque domaine peut placer seulement 20 d'entre eux, qui signifie que chaque demande va être taille-limitée. AJAX Biscuit-basé est le plus utile quand votre emplacement est conçu pour lui, parce que ses limitations le rendent dur pour l'employer comme chute. La fonctionnalité de base est fournie en plaçant un biscuit, chargeant une image, et puis le vote sur un intervalle tout en attendant la réponse pour apparaître. L'exécution est simple ; pour faire quelque chose sans compter qu'alerter le contenu du résultat, vous avez juste placé votre propre traiteur fait sur commande d'événement d'onComplete. Un exemple où le serveur renvoie l'entrée et le nombre de fois il s'est appelé est montré dans les 2 listes suivantes. Le Javascript de l'exemple est montré dans la liste 1 et le code de PHP, qui lit le biscuit et puis place une réponse, est montré dans la liste 2.
Énumération De 1 AJAX Biscuit-Actionnés
| 1 < HTML > 2 < tête > 3 < title>Cookie Test</title > 4 5 < manuscrit type="text/javascript" > 6 fonction CookieRequest() {} 7 CookieRequest.prototype = { intervalle 8 : 500. 9 tentatives : 5. attemptCounter 10 : 0. appel 11 : function(url, payload) { variété 12 d = nouveau Date() ; 13 variété i = nouvel Image() ; 14 this.setCookie('CR', payload) ; 15 i.src = URL + '?u = '+ d.getTime() ; art de l'auto-portrait de 16 variétés = ceci ; 17 this.timerId = setTimeout(function() 18 {self.read() ; }, this.interval) ; 19 }, 20 ont lu : function() { 21 this.attemptCounter++ ; 22 //contrôle pour des données 23 données de variété = this.getCookie('CR ') ; 24 si (données ! = faux) { 25 this.attemptCounter = 0 ; 26 this.onComplete(data) ; 27 de retour rectifient ; 28 } 29 30 //contrôle pour l'erreur 31 si (this.attemptCounter > this.attempts) { 32 this.onError() ; 33 } autrement { art de l'auto-portrait de 34 variétés = ceci ; 35 this.timerId = setTimeout(function() {self.read() ; }, 36 this.interval) ; 37 } 38 }, onComplete 39 : function(result) { alert(result) 40 41 }, onError 42 : function() { 43 alert('Request chronométrés hors de ') ; 44 }, setCookie 45 : le function(name, valeur, expire) { 46 document.cookie = nom + "=" + escape(value) + 47 ((expire) ? "; expire = "+ 48 expires.toGMTString() : "") ; 49 }, getCookie 50 : function(name) { docCookie de 51 variétés = document.cookie.split("; ") ; 52 pour (variété i=0 ; i < docCookie.length ; i++){ morceau de 53 variétés = "="); de docCookie[i].split( 54 si nom du == (piece[0 ]) { 55 unescape(String(piece[1 de retour ]). replace(/\+/g, "")) ; 56 } 57 } 58 faux de retour ; 59 } 60} test() de 61 fonctions { Cr de 62 variétés = nouveau CookieRequest() ; 63 cr.call('cookie.php', données 'Some d'exemple ') ; 64} 65 </manuscrit > 66 </tête > 67 < corps > 68 < un href='javascript:test()'>Test</a > 69 </corps > |
|
|
Dans la liste 1, la fonctionnalité biscuit-actionnée d'AJAX est enveloppée à l'intérieur de la classe CookieRequest de Javascript. Des demandes au serveur sont faites avec la méthode d'appel (lignes 11-19). La méthode d'appel prend un URL auquel pour envoyer la demande. Elle prend également une charge utile (le contenu que nous voulons envoyer au serveur), qui est introduite le biscuit de demande. La méthode emploie alors la méthode de setCookie pour placer un biscuit appelé CR (ligne 14) ; elle alors crée un nouvel objet d'image et place son src au URL demandé (ligne 15). La méthode finit en commençant un temporisateur, qui court la méthode lue toutes les 500 millisecondes.
La méthode lue (lignes 2038) vérifie la présence du biscuit de CR (lignes 2324). Si elle existe, les données dans elles sont passées à la méthode d'onComplete (ligne 26). Si les données ne sont pas présentes, nous vérifions les erreurs ; ceci est fait en comparant le nombre de contrôles que nous avons accomplis contre les contrôles maximum réglés dans la propriété de tentatives (ligne 31). S'il y a une erreur, la méthode d'onError s'appelle (ligne 32). Si aucune erreur n'est présente, nous commençons un autre temporisateur pour faire le prochain contrôle (lignes 34-35).
Les lignes 39-44 contiennent les méthodes que vous dépasserez quand en utilisant la classe. La méthode d'onComplete s'appelle quand des données sont avec succès chargées. C'est l'équivalent de la propriété de rappel de service dans la classe de HttpClient. La méthode d'onError s'appelle si la demande n'accomplit pas avec succès ; naturellement, vous pourriez laisser ceci comme alerte, mais, dans la plupart des cas, vous voudrez fournir un message d'erreur plus compréhensible à vos utilisateurs ou même réessayer la demande.
La classe de CookieRequest contient également des méthodes d'aide pour traiter obtenir et les travaux de réglage de setCookie de biscuits (lignes 45-49) à côté de placer la valeur de document.cookie à a urlencoded la corde dans le format des travaux de getCookie du biscuit name=value. (lignes 50-59) en dédoublant document.cookie dans une part pour chaque biscuit (les biscuits sont séparés par ";") et alors faisant une boucle au-dessus de ces pièces recherchant un biscuit avec le nom indiqué. Si un nom assorti est trouvé, la valeur est retournée ; autrement, faux est retourné.
La page de PHP qui est employée avec Listing1 est montrée dans Listing2. Elle est employée comme URL dans la méthode d'appel et traite la charge utile qui est placée ; elle place alors une réponse pour lu à l'encavateur.
Énumérant 2 - Page de serveur de PHP pour manipuler une demande du biscuit AJAX
| 1 < ?php session_start() 2 ; 3 si (!isset($_SESSION['i '])) { 4 $_session['i '] = 0 ; 5 } 6 si (isset($_COOKIE['CR '])) { 7 $_session['i']++ ; 8 setcookie('CR', 'Server répondent : '$_SESSION['i '].', 9 '$_COOKIE['CR ']) ; 10} 11 ? > |
Ce code de PHP fournit la fonctionnalité de base requise pour agir l'un sur l'autre avec des demandes biscuit-basées d'AJAX. Il emploie des sessions de PHP pour stocker un compteur et des incréments il pendant que chaque demande est faite. Car vous prolongez ce code, vous pourriez employer différentes pages de PHP pour décider quelle action à exécuter, ou vous pourriez inclure cette information dans le biscuit qui est envoyé du client. Lignes installation de base de session de poignée de 2-5, plaçant à l'opposé de 0 si c'est le premier appel. Lignes poignée de 6-10 la vérification du biscuit de client et l'envoi de la réponse. Ceci est fait en plaçant un biscuit qui alors sera envoyé avec la réponse (ligne 8-9). Si vous voulez manipuler de grandes réponses de serveur, vous devriez inclure le code pour dédoubler les données parmi les biscuits multiples.
|
|