Potete trasferire i dati al vostro assistente usando i biscotti, ma tutta l'esecuzione che usando sarà severamente limitata. I biscotti hanno un formato massimo di 4k ed ogni dominio può regolare loro soltanto 20, che significa che ogni richiesta sta andando essere formato-limitata. AJAX Biscotto-basato è più utile quando il vostro luogo è progettato per esso, perché le relative limitazioni lo rendono duro usarlo come ritorno. La funzionalità di base è fornita regolando un biscotto, caricando un'immagine ed allora la votazione su un intervallo mentre aspetta la risposta per comparire. L'esecuzione è semplice; per fare qualcosa oltre ad avvisare il contenuto del risultato, avete regolato appena il vostro proprio alimentatore su ordinazione di evento del onComplete. Un esempio dove l'assistente restituisce l'input ed il numero di volte esso è stato denominato è indicato nei seguenti 2 elenchi. Il Javascript dell'esempio è indicato in elenco 1 ed il codice di PHP, che legge il biscotto ed allora regola una risposta, è indicato in elenco 2.
Elenco Del 1 AJAX Biscotto-Alimentato
| 1 < HTML > 2 < testa > 3 < title>Cookie Test</title > 4 5 < scritto type="text/javascript" > 6 funzione CookieRequest() {} 7 CookieRequest.prototype = { intervallo 8: 500. 9 tentativi: 5. attemptCounter 10: 0. chiamata 11: function(url, payload) { 12 varietà d = nuovo Date(); 13 varietà i = nuovo Image(); 14 this.setCookie('CR', payload); 15 i.src = URL + '?u = '+ d.getTime(); un auto di 16 varietà = questo; 17 this.timerId = setTimeout(function() 18 {self.read(); }, this.interval); 19 }, 20 hanno letto: function() { 21 this.attemptCounter++; 22 //controllo per i dati 23 dati di varietà = this.getCookie('CR '); 24 se (dati! = falso) { 25 this.attemptCounter = 0; 26 this.onComplete(data); 27 di ritorno allineare; 28 } 29 30 //controllo per l'errore 31 se (this.attemptCounter > this.attempts) { 32 this.onError(); 33 } altrimenti { un auto di 34 varietà = questo; 35 this.timerId = setTimeout(function() {self.read(); }, 36 this.interval); 37 } 38 }, onComplete 39: function(result) { alert(result) 40 41 }, onError 42: function() { 43 più alert('Request cronometrati verso l'esterno '); 44 }, setCookie 45: il function(name, valore, espira) { 46 document.cookie = nome + "=" + escape(value) + 47 ((espira)? "; espira = "+ 48 expires.toGMTString(): ""); 49 }, getCookie 50: function(name) { un docCookie di 51 varietà = document.cookie.split("; "); 52 per (varietà i=0; i < docCookie.length; i++){ una parte di 53 varietà = "="); di docCookie[i].split( 54 se nome del == (piece[0 ]) { 55 unescape(String(piece[1 di ritorno ]). replace(/\+/g, "")); 56 } 57 } 58 falsi di ritorno; 59 } 60} un test() di 61 funzione { un Cr di 62 varietà = nuovo CookieRequest(); 63 cr.call('cookie.php', dati 'Some di esempio '); 64} 65 </scritto > 66 </testa > 67 < corpo > 68 < un href='javascript:test()'>Test</a > 69 </corpo > |
|
|
In elenco 1, la funzionalità biscotto-alimentata di AJAX è spostata all'interno del codice categoria CookieRequest di Javascript. Le richieste all'assistente sono fatte con il metodo di chiamata (linee 11-19). Il metodo di chiamata prende un URL a cui trasmettere la richiesta. Inoltre prende un carico utile (il soddisfare che desideriamo trasmettere all'assistente), che è introdotto il biscotto di richiesta. Il metodo allora usa il metodo del setCookie per regolare un biscotto chiamato CR (linea 14); allora genera un nuovo oggetto di immagine e regola il relativo src al URL chiesto (linea 15). Il metodo rifinisce iniziando un temporizzatore, che fa funzionare il metodo colto ogni 500 millisecondi.
Il metodo colto (linee 2038) controlla per vedere se c'è la presenza del biscotto del CR (linee 2324). Se esiste, i dati in esso sono passati al metodo del onComplete (linea 26). Se i dati non sono assenti, controlliamo per vedere se ci sono errori; ciò è fatta confrontando il numero di controlli che abbiamo completato contro i controlli massimi regolati nella proprietà di tentativi (linea 31). Se ci è un errore, il metodo di onError è denominato (linea 32). Se non c'è nessun errore presente, iniziamo un altro temporizzatore per fare il controllo seguente (linee 34-35).
Le linee 39-44 contengono i metodi che escluderete quando usando il codice categoria. Il metodo del onComplete è denominato quando i dati sono caricati con successo. Ciò è l'equivalente della proprietà di chiamata ripetuta nel codice categoria di HttpClient. Il metodo di onError è denominato se la richiesta non completa con successo; naturalmente, potreste lasciare questo come allarme, ma, nella maggior parte dei casi, desidererete fornire un messaggio di errore più comprensibile ai vostri utenti o persino processare nuovamente la richiesta.
Il codice categoria di CookieRequest inoltre contiene i metodi dell'assistente per occuparsi dell'ottenere e gli impianti di regolazione del setCookie dei biscotti (linee 45-49) regolando il valore di document.cookie alla a urlencoded la stringa nella disposizione degli impianti del getCookie del biscotto name=value. (linee 50-59) spaccando document.cookie in una parte per ogni biscotto (i biscotti sono separati da ";") ed allora collegando sopra queste parti che cercano un biscotto con il nome specificato. Se un nome di corrispondenza è trovato, il valore è restituito; altrimenti, falso è rinviato.
La pagina di PHP che è usata con Listing1 è indicata in Listing2. È usata come il URL nel metodo di chiamata e procede il carico utile che è regolato; allora regola una risposta per colto alla gru a benna.
Elencando 2 - Pagina dell'assistente di PHP per il maneggiamento della richiesta del biscotto AJAX
| 1 <?php session_start() 2; 3 se (!isset($_SESSION['i '])) { 4 $_session['i '] = 0; 5 } 6 se (isset($_COOKIE['CR '])) { 7 $_session['i']++; 8 setcookie('CR', 'Server rispondono: '$_SESSION['i '].', 9 '$_COOKIE['CR ']); 10} 11? > |
Questo codice di PHP fornisce la funzionalità di base stata necessaria per interagirsi con le richieste biscotto-basate di AJAX. Usa le sessioni di PHP per immagazzinare un contatore e gli incrementi esso mentre ogni richiesta è fatta. Poichè estendete questo codice, potreste usare le pagine differenti di PHP per decidere quale azione da effettuare, o voi potreste includere quelle informazioni nel biscotto che è trasmesso dal cliente. Linee messa a punto di base di sessione della maniglia di 2-5, regolantesi al contrario di 0 se questa è la prima chiamata. Linee maniglia di 6-10 il controllo del biscotto del cliente e la trasmissione della risposta. Ciò è fatta regolando un biscotto che allora sarà trasmesso con la risposta (linea 8-9). Se desiderate maneggiare le grandi risposte dell'assistente, dovreste includere il codice per spaccare i dati fra i biscotti multipli.
|
|