Vista geral De XMLHttpRequest

Originalmente, Microsoft projetou XMLHttpRequest permitir que o Internet Explorer (IE) carregue originais de XML do Javascript. Mesmo que tenha XML em seu nome, XMLHttpRequest é realmente um cliente genérico do HTTP para o Javascript. Com ele, o Javascript pode fazer PARA COMEÇAR e AFIXAR pedidos do HTTP. (para pedidos do BORNE, os dados podem ser emitidos ao usuário em um formato de seu escolher.) As limitações principais a XMLHttpRequest são devido ao sandbox da segurança do browser. Pode fazer somente pedidos de HTTP(S) (a lima URLs, para o exemplo, não trabalho), e pode fazer pedidos somente ao mesmo domínio que a página atualmente carregada.

  

As limitações da segurança de XMLHttpRequest limitam as maneiras em que você pode o usar, mas o trade-off na segurança adicionada é bom worth ele. A maioria de ataques de encontro às aplicações do Javascript centram-se em torno do código malicioso injetando no Web page. Se XMLHttpRequest permitisse pedidos a qualquer Web site, assentaria bem em um jogador principal nestes ataques. O sandbox da segurança reduz estes problemas potenciais. Além, simplifica o modelo de programação porque o código do Javascript pode implicitamente confiar em todos os dados que carregar de XMLHttpRequest. Pode confiar nos dados porque os dados novos são tão seguros justo quanto a página que carregou a página inicial.

Apesar do fato que XMLHttpRequest fornece somente um API pequeno e apenas um punhado dos métodos e das propriedades, tem suas diferenças entre browsers. Estas diferenças estão principalmente no evento que segura e objetam o instantiation (no IE, XMLHttpRequest é realmente um objeto de ActiveX), assim que não são duras de trabalhar ao redor. Na seguinte vista geral do XMLHttpRequest API, a sintaxe de Mozilla para o instantiation de XMLHttpRequest é usada. Se você quiser funcionar os exemplos no IE, você necessita substituir XMLHttpRequest() novo; com um ou outro ActiveXObject("MSXML2.XMLHTTP.3.0 novo"); ou o método cheio do instantiation do cruz-cross-browser mostrado do "na seção de XMLHttpRequest Cruz-cross-Browser" deste artigo.

XMLHttpRequest é o método mais-usado para comunicações de AJAX porque fornece duas características originais. A primeira característica fornece a abilidade de carregar o índice novo sem esse índice que está sendo mudado em toda a maneira, que fizer extremamente fácil de caber AJAX em seus testes padrões normais do desenvolvimento. A segunda característica permite que o Javascript faça chamadas synchronous. Uma chamada synchronous para todas operações restantes até que esteja completa, e quando esta não for uma opção que esteja usada geralmente, pode ser útil nos casos em que o pedido atual deve ser terminado antes que umas ações mais adicionais estejam feitas exame.

XMLHttpRequest::Open()

O método aberto é usado ajustar o tipo do pedido (COMECE, AFIXE, POSTO, ou PROPFIND), o URL da página que está sendo pedida, e se a chamada será assíncrona. Um username e uma senha para o authentication do HTTP podem também opcionalmente ser passados. O URL pode ser um trajeto relativo (tal como page.html) ou completo que inclui o endereço do usuário (tal como http://blog.joshuaeichorn.com/page.html). A assinatura básica do método é:

open(type, URL, isAsync, username, password)

No ambiente do Javascript, as limitações da segurança estão no lugar. Estas limitações da segurança fazem com que o método aberto jogue uma exceção se o URL for de um domínio diferente do que a página atual. Os seguintes usos do exemplo abertos ao jogo acima um synchronous COMEÇAM o pedido a index.html:

1 req do var = XMLHttpRequest() novo;
2 req.open('GET ', ' index.html ', falsos);
3 req.send(null);
== 200) de 4 if(req.status
5 alert(req.responseText);

XMLHttpRequest::Send()

O método da emissão faz a conexão ao URL especificada em aberto. Se o pedido for assíncrono, a chamada retorná-lo-á imediatamente; se não, a chamada obstruirá uma execução mais adicional até que a página downloaded. Se o tipo do pedido for BORNE, o payload estará emitido como o corpo do pedido que é emitido ao usuário. A assinatura do método é:

send(payload)

Quando você faz um pedido do BORNE, você necessitará ajustar o Índice-tipo encabeçamento. Esta maneira, o usuário sabe o que fazer com o índice uploaded. Ao imitador que emite um formulário usando o BORNE do HTTP, você ajustou o tipo satisfeito a application/x-www-form-urlencoded. Os dados de URLencoded são o mesmo formato que você vê em um URL após "?". Você pode ver um exemplo destes dados codificados fazendo um formulário e ajustando seu método PARA COMEÇAR. O seguinte exemplo mostra um pedido synchronous do BORNE a index.php que está emitindo um payload de URLencoded. Se index.php contiver < o?php var_dump($_POST); ? >, você pode ver os dados submetidos traduzidos como se é um formulário normal no alerta:

1 req do var = XMLHttpRequest() novo;
2 req.open('POST ', ' index.php ', falsos);
3 req.setRequestHeader('Content-type ',
4         ' application/x-www-form-urlencoded;charset=UTF-8;');
5 req.send('hello=world&XMLHttpRequest=test ');
== 200) de 6 if(req.status
7   alert(req.responseText);

XMLHttpRequest::setRequestHeader()

Há muitos casos diferentes em que ajustar um encabeçamento em um pedido pôde ser útil. O uso o mais comum do setRequestHeader() deve ajustar o Índice-tipo, porque a maioria de aplicações da correia fotorreceptora sabem já tratar de determinados tipos, tais como URLencoded. A assinatura do método do setRequestHeader faz exame de dois parâmetros: o encabeçamento a ajustar-se e seu valor:

setRequestHeader(header, value)

Porque os pedidos emitidos usando XMLHttpRequest emitem os mesmos encabeçamentos padrão, including encabeçamentos do bolinho e encabeçamentos do authentication do HTTP, como um pedido normal do browser, o nome do encabeçamento será geralmente o nome do encabeçamento do HTTP que você quer cancelar. Além aos encabeçamentos cancelando do defeito, o setRequestHeader é útil para ajustar o costume, encabeçamentos application-specific. Os encabeçamentos feitos sob encomenda são prefixados geralmente com o x para distingui-los do padrão uns. O seguinte exemplo faz um synchronous COMEÇAR o pedido que adiciona um encabeçamento chamado X-foo a test.php. Se test.php contiver < o?php var_dump($_SERVER); ? >, você verá o encabeçamento submetido no alerta:

1 req do var = XMLHttpRequest() novo;
2 req.open('GET ', ' test.php ', falsos);
3 req.setRequestHeader('X-foo', 'bar ');
4 req.send(null);
5
== 200) de 6 if(req.status
7 alert(req.responseText);

XMLHttpRequest::getResponseHeader() e getAllResponseHeaders()

O método do geTResponseHeader permite que você comece um único encabeçamento da resposta; isto é especial útil quando tudo que você necessita é um encabeçamento como o Índice-tipo; anote que o encabeçamento especificado é caixa-case-insensitive. A assinatura do método é como segue:

getResponseHeader(header)

os getAllResponseHeaders retornam todos os encabeçamentos da resposta em uma única corda; isto é útil para eliminar erros ou procurarar por um valor. O seguinte exemplo faz um synchronous COMEÇAR o pedido a test.html. Quando o cliente recebe uma resposta, o Índice-tipo está alertado e todos os encabeçamentos são alertados:

1 req do var = XMLHttpRequest() novo;
2 req.open('GET ', ' test.html ', falsos);
3 req.send(null);
4
== 200) de 5 if(req.status {
6    alert(req.getResponseHeader('Content-type '));
7    alert(req.getAllResponseHeaders()); 8}

Outros Métodos De XMLHttpRequest

Todos os browsers executam um método do abort(), que seja usado cancelar um pedido assíncrono in-progress. (um exemplo deste é mostrado "emitindo na seção dos pedidos assíncronos" neste artigo.) os browsers Mozilla-baseados oferecem também alguns métodos extra no alto do API básico; por exemplo, o addEventListener() e o removeEventListener() fornecem uma maneira travar eventos do status sem usar sobre * as propriedades. Há também um método do overrideMimeType() que makes ele possível forçar o Índice-tipo a text/xml de modo que esteja analisado gramaticalmente em um original de DOM mesmo se o usuário não o relata como esta'. Os métodos Mozilla-específicos podem ser úteis em determinadas circunstâncias, mas em a maioria de casos, você deve permanecer afastado deles porque não todos os browsers os suportam.

Propriedades De XMLHttpRequest

XMLHttpRequest fornece um número de propriedades que fornecem a informação ou os resultados sobre o pedido. A maioria das propriedades são evidentes; você lê simplesmente o valor e age nele. Sobre * as propriedades são os alimentadores do evento que são usados atribuindo uma função a elas. Uma lista de todas as propriedades segue:

Nota

Mozilla restaura alimentadores do evento, tais como o onreadystatechange, depois que um pedido é terminado, assim que você necessita restaurá-los se você estiver fazendo chamadas múltiplas com o mesmo objeto.

referência do readyState

A seguinte tabela mostra os valores possíveis para a variável do readyState. Retornará um número que representa o estado atual do objeto. Cada pedido progredirá através da lista dos readyStates

Níveis De ReadyState
código de status do readyState Status do objeto de XMLHttpRequest
(0) UNINITIALIZED O objeto foi criado mas não inicializado. (o método aberto não foi chamado.)
(1) CARREGAR O objeto foi criado, mas o método da emissão não foi chamado.
(2) CARREGADO O método da emissão foi chamado, mas o status e os encabeçamentos não estão ainda disponíveis.
(3) INTERATIVO Alguns dados foram recebidos. Chamar as propriedades responseBody e do responseText neste estado para obter resultados parciais retornará um erro, porque os encabeçamentos do status e da resposta não estão inteiramente disponíveis.
(4) TERMINADO Todos os dados foram recebidos, e os dados completos estão disponíveis nas propriedades responseBody e do responseText.


O readyState variável e o alimentador do evento do onreadystatechange são ligados de tal maneira que cada vez que a variável do readyState é mudada, o alimentador do evento do onreadystatechange é chamado.

este é um artigo adicionado pelo carol Rudenberg


Disclaimer: Nosso Web site não é responsável para a informação contida por este artigo. Este artigo em nenhuma maneira reflete as vistas, as opiniões, os pensamentos ou a opinião da equipe de funcionários do diretório dos artigos.

Observação da tradução: O artigo de "vista geral XMLHttpRequest" foi traduzido usando um serviço de tradução automatizado. Nós desculpamo-nos sincerely por todos os erros da tradução que ocorram. Obrigado compreendendo.

Online: 530 users browsing the articles directory