Detalhes XMLHttpRequest e Fazer solicitações assíncrona em Ajax

Independentemente de como o tipo XMLHttpRequest é instanciado, e independentemente do browser ou plataforma, XMLHttpRequest tem o mesmo conjunto de métodos e propriedades. Tabela 4-1 define as propriedades e métodos. Eu não fornecem mais detalhes dos métodos, como eles são usados em todo o artigo. Entretanto, eu quero dar uma atenção especial para as propriedades, porque eles são usados extensivamente. Quando um pedido recuperou dados, quatro propriedades são usadas para indicar como o pedido foi. Considere o seguinte código HTML, que faz referência a quatro propriedades e é chamado após o método send completou:

document.getElementById ( 'httpcode'). innerHTML = xmlhttp.status; document.getElementById ( 'httpStatus'). xmlhttp.statusText innerHTML =; document.getElementById ( 'resultado'). xmlhttp.responseText innerHTML =; document.getElementById ( ' xmlresult '). innerHTML = xmlhttp.responseXML;
  

As quatro propriedades podem ser subdivididos em duas subcategorias: resultado e de status HTTP. O estado e as propriedades statusText recuperar os códigos de resultado HTTP. A propriedade de estado contém um valor inteiro, como 200 para o sucesso. A propriedade statusText contém uma representação textual do código de resultado HTTP, tais como OK. O responseText e propriedades responseXML conter o resultado da solicitação HTTP. A diferença entre as duas propriedades é que responseText contém um buffer de seqüência de resultados, e as referências responseXML uma representação XML DOM dos resultados.

Fazer solicitações assíncronaÉ possível usar o objeto XMLHttpRequest de forma sincronizada, o que significa que o momento é chamado de enviar, o navegador pára o processamento de outras mensagens e aguarda uma resposta. Mas é uma má idéia usar o objeto XMLHttpRequest de forma síncrona, como ele trava o navegador.

Para o momento, ignorando o código LoadAtomFeed e focalizando XMLHttpRequest, vamos olhar para a forma como o navegador pode ser bloqueado. O exemplo a seguir é uma página ASP.NET que paira por dez segundos, e será referenciado pelo objeto XMLHttpRequest:

<% @ Page Language = "C #"%>  Hanging página  <% System.Threading.Thread.Sleep (10000);%> Olá, depois de dez segundo de sono! 

A amostra ASP.NET é escrito usando a linguagem de programação C #, e não há uma única instrução, System.Threading.Thread.Sleep. A única declaração faz com que o segmento atual para o sono por dez segundos. A solução é usar um assíncrono Ajax XMLHttpRequest. Um pedido assíncrono não irá bloquear o navegador, eo usuário pode continuar clicando ou usando outras abas do navegador. O código-fonte é o seguinte escrito corretamente aplicação Ajax para usar uma solicitação assíncrona:

 Sample Page    

Documento No Result No Result

Há várias novas adições à aplicação Ajax reescrito, e como lidam com as questões técnicas de carregamento de conteúdo de forma assíncrona. Vamos começar, centrando-se sobre a função GetIt. A implementação de GetIt é semelhante ao exemplos de aplicação Ajax anterior, exceto que o terceiro parâmetro do método aberto é verdade, para indicar que o pedido será assíncrona. Isto significa que ao enviar o método é chamado , ele irá retornar imediatamente. XMLHttpRequest Sempre que opera nos modos assíncrono, o feedback é dado para o chamador sobre o estado do pedido. A propriedade onreadystatechange é uma função que recebe o feedback. É importante notar que a função de feedback deve ser atribuído antes de cada envio, pois após a conclusão do pedido de propriedade onreadystatechange é reposto. Isto é evidente na fonte e Mozilla Firefox.

A propriedade onreadstatechange é atribuída a função AsyncUpdateEvent. Na execução do AsyncUpdateEvent é um switch que testa o estado actual do pedido. Quando um assíncrono solicitação é feita, o roteiro é livre para continuar a executar outro código. Isso pode causar problemas se o script tenta ler os resultados antes do pedido pedido tenha sido concluído. Usando a propriedade readyState, é possível conhecer o estágio da solicitação HTTP. A propriedade readyState pode conter um dos cinco valores, onde cada valor representa um estado de solicitação:

• 0: A instância XMLHttpRequest está em um estado inconsistente, e os dados do resultado não deve ser referência.

• 1: A solicitação está em andamento, e os dados do resultado não deve ser recuperado.

• 2: O pedido tem baixado os dados do resultado e prepara-lo para referência.

• 3: O script pode interagir com o XMLHttpRequest exemplo, embora os dados não são totalmente carregado.

• 4: O pedido de dados e resultados são completos e têm sido concluída.

O pedido afirma que parece indicar que é possível manipular várias propriedades em diferentes estados. O problema é que nem todos os navegadores suportam a mesma propriedade estados em códigos mesmo estado. A cruz-plataforma única solução é fazer referência a propriedades resultado XMLHttpRequest (status, statusText, responseText e responseXML) quando o estado do pedido é igual a 4. Quando o estado de solicitação é de 4, você pode ter certeza de que as propriedades resultado contém um valor válido.

Executando a aplicação assíncrona resultados Ajax em uma chamada que está sendo feita, eo navegador não está bloqueado. Você pode clicar no botão, abrir um novo navegador, e navegar para outro site.

um artigo submetido por Sonja Lande


Isenção de responsabilidade:O nosso site não se responsabiliza pelo conteúdo deste artigo. Webarticles é uma fonte de informação livre.
Importante: Este artigo "XMLHttpRequest Detalhes e Fazer solicitações assíncrona em Ajax" foi traduzida por um software automático. Nós sentimos muito por quaisquer erros de ortografia que pode ter ocorrido. Obrigado pela sua compreensão.


Online: 289 users browsing the articles directory