~ de l'option 2 de chute d'AJAX envoyant une demande en utilisant un biscuit

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.

c'est un article supplémentaire par la hymne de louange Rudenberg


Déni : Notre site Web n'est pas responsable de l'information contenue par cet article. Cet article reflète nullement les vues, les avis, les pensées ou la croyance du personnel d'annuaire d'articles.

Notification de traduction : L'article "~ de l'option 2 de chute d'AJAX envoyant une demande employant un biscuit" a été traduit en utilisant un service de traduction automatisé. Nous faisons des excuses sincèrement pour toutes les erreurs de traduction qui se sont produites. Merci de l'arrangement.

Online: 551 users browsing the articles directory