Você pode transferir dados a seu usuário usando bolinhos, mas toda a execução que usa os será severamente limitada. Os bolinhos têm um tamanho máximo de 4k, e cada domínio pode ajustar somente 20 deles, que significa que cada pedido está indo ser tamanho-limitado. AJAX Bolinho-baseado é o mais útil quando seu local é projetado para ele, porque suas limitações fazem duro o usar como um recuo. A funcionalidade básica é fornecida ajustando um bolinho, carregando uma imagem, e então a votação em um intervalo ao esperar a resposta para aparecer. A execução é simples; para fazer algo além de alertar os índices do resultado, você ajustou apenas seu próprio alimentador feito sob encomenda do evento do onComplete. Um exemplo onde o usuário retornasse a entrada e o número das épocas ele foi chamado é mostrado nas seguintes 2 listas. O Javascript do exemplo é mostrado na lista 1 e o código de PHP, que lê o bolinho e ajusta então uma resposta, é mostrado na lista 2.
Alistando 1 AJAX Bolinho-Cookie-Powered
| 1 < HTML > 2 < cabeça > 3 < title>Cookie Test</title > 4 5 < certificado type="text/javascript" > 6 função CookieRequest() {} 7 CookieRequest.prototype = { intervalo 8: 500. 9 tentativas: 5. attemptCounter 10: 0. chamada 11: function(url, payload) { 12 var d = Date() novo; 13 var i = Image() novo; 14 this.setCookie('CR', payload); 15 i.src = URL + '?u = ' + d.getTime(); self de 16 var = isto; 17 this.timerId = setTimeout(function() 18 {self.read(); }, this.interval); 19 }, 20 lidos: function() { 21 this.attemptCounter++; 22 //verificação para dados 23 dados do var = this.getCookie('CR '); 24 se (dados! = falso) { 25 this.attemptCounter = 0; 26 this.onComplete(data); 27 do retorno rectificam; 28 } 29 30 //verificação para o erro 31 se (this.attemptCounter > this.attempts) { 32 this.onError(); 33 } mais { self de 34 var = isto; 35 this.timerId = setTimeout(function() {self.read(); }, 36 this.interval); 37 } 38 }, onComplete 39: function(result) { alert(result) 40 41 }, onError 42: function() { 43 as mais alert('Request cronometrados para fora de '); 44 }, setCookie 45: o function(name, valor, expira) { 46 document.cookie = nome + "=" + escape(value) + 47 ((expira)? "; expira = "+ 48 expires.toGMTString(): ""); 49 }, getCookie 50: function(name) { docCookie de 51 var = document.cookie.split("; "); 52 para (var i=0; i < docCookie.length; i++){ parte de 53 var = "="); de docCookie[i].split( 54 se nome do == (piece[0 ]) { 55 unescape(String(piece[1 do retorno ]). replace(/\+/g, "")); 56 } 57 } 58 falsos do retorno; 59 } 60} test() de 61 funções { cr de 62 var = CookieRequest() novo; 63 cr.call('cookie.php', dados 'Some do exemplo '); 64} 65 </certificado > 66 </cabeça > 67 < corpo > 68 < um href='javascript:test()'>Test</a > 69 </corpo > |
|
|
Na lista 1, a funcionalidade bolinho-cookie-powered de AJAX é envolvida dentro da classe CookieRequest do Javascript. Os pedidos ao usuário são feitos com o método da chamada (linhas 11-19). O método da chamada faz exame de um URL a que para emitir o pedido. Faz exame também de um payload (o índice que nós queremos emitir ao usuário), que seja emitido no bolinho do pedido. O método usa então o método do setCookie ajustar um bolinho nomeado CR (linha 14); então cría um objeto novo da imagem e ajusta seu src ao URL pedido (linha 15). O método termina começando um temporizador, que funcione o método lido cada 500 milissegundos.
O método lido (linhas 2038) verifica para ver se há a presença do bolinho do CR (linhas 2324). Se existir, os dados neles estão passados ao método do onComplete (linha 26). Se os dados não estiverem atuais, nós verificamos para ver se há erros; isto é feito comparando o número das verificações que nós terminamos de encontro às verificações máximas ajustadas na propriedade das tentativas (linha 31). Se houver um erro, o método do onError está chamado (linha 32). Se nenhum erro estiver atual, nós começamos um outro temporizador fazer a verificação seguinte (linhas 34-35).
As linhas 39-44 contêm os métodos que você cancelará ao usar a classe. O método do onComplete é chamado quando os dados são carregados com sucesso. Este é o equivalente da propriedade da rechamada na classe de HttpClient. O método do onError é chamado se o pedido não terminar com sucesso; naturalmente, você poderia deixar este como um alerta, mas, em a maioria de casos, você quererá fornecer uma mensagem de erro mais compreensível a seus usuários ou retry mesmo o pedido.
A classe de CookieRequest contem também métodos do ajudante para tratar de começar e os trabalhos de ajuste do setCookie dos bolinhos (linhas 45-49) ajustando o valor de document.cookie a a urlencoded a corda no formato de trabalhos do getCookie do bolinho name=value. (linhas 50-59) rachando document.cookie em uma porção para cada bolinho (os bolinhos são separados por ";") e então dando laços sobre estas peças que procuram um bolinho com o nome especificado. Se um nome combinando for encontrado, o valor está retornado; se não, falso é retornado.
A página de PHP que é usada com Listing1 é mostrada em Listing2. É usada como o URL no método da chamada e processa o payload que é ajustado; ajusta então uma resposta para lido à garra.
Alistando 2 - Página do usuário de PHP para segurar um pedido do bolinho 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 respondem: ' $_SESSION['i '].', 9 ' $_COOKIE['CR ' ]); 10} 11? > |
Este código de PHP fornece a funcionalidade básica necessitada interagir com os pedidos bolinho-baseados de AJAX. Usa sessões de PHP armazenar um contador e incrementos ele enquanto cada pedido é feito. Porque você estende este código, você poderia usar páginas diferentes de PHP decidir-se que ação a executar, ou você poderia incluir essa informação no bolinho que é emitido do cliente. Linhas instalação básica da sessão do punho de 2-5, ajustando o contador a 0 se esta for a primeira chamada. Linhas punho de 6-10 verificar do bolinho do cliente e a emissão da resposta. Isto é feito ajustando um bolinho que seja emitido então com a resposta (linha 8-9). Se você quisesse segurar respostas grandes do usuário, você necessitaria incluir o código para rachar os dados entre bolinhos múltiplos.
|
|