DOM - objeto XMLHttpRequest
O objeto XMLHttpRequest estabelece um meio entre o lado do cliente e o lado do servidor de uma página da Web que pode ser usado por muitas linguagens de script como JavaScript, JScript, VBScript e outro navegador da Web para transferir e manipular os dados XML.
Com o objeto XMLHttpRequest é possível atualizar parte de uma página web sem recarregar toda a página, solicitar e receber os dados de um servidor após o carregamento da página e enviar os dados para o servidor.
Sintaxe
Um objeto XMLHttpRequest pode ser instanciado da seguinte maneira -
xmlhttp = new XMLHttpRequest();
Para lidar com todos os navegadores, incluindo IE5 e IE6, verifique se o navegador oferece suporte ao objeto XMLHttpRequest conforme abaixo -
if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... {
xmlHttp = new XMLHttpRequest();
} else if(window.ActiveXObject) // for Internet Explorer 5 or 6 {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
Exemplos para carregar um arquivo XML usando o objeto XMLHttpRequest podem ser consultados aqui
Métodos
A tabela a seguir lista os métodos do objeto XMLHttpRequest -
S.No. | Método e Descrição |
---|---|
1 | abort() Encerra a solicitação atual feita. |
2 | getAllResponseHeaders() Retorna todos os cabeçalhos de resposta como uma string ou nulo se nenhuma resposta foi recebida. |
3 | getResponseHeader() Retorna a string que contém o texto do cabeçalho especificado ou nulo se a resposta ainda não foi recebida ou o cabeçalho não existe na resposta. |
4 | open(method,url,async,uname,pswd) É usado em conjugação com o método Send para enviar o pedido ao servidor. O método aberto especifica os seguintes parâmetros -
|
5 | send(string) É utilizado para enviar a solicitação trabalhando em conjugação com o método Open. |
6 | setRequestHeader() O cabeçalho contém o par rótulo / valor para o qual a solicitação é enviada. |
Atributos
A tabela a seguir lista os atributos do objeto XMLHttpRequest -
S.No. | Atributo e descrição |
---|---|
1 | onreadystatechange É uma propriedade baseada em evento que é ativada a cada mudança de estado. |
2 | readyState Isso descreve o estado atual do objeto XMLHttpRequest. Existem cinco estados possíveis da propriedade readyState -
|
3 | responseText Esta propriedade é usada quando a resposta do servidor é um arquivo de texto. |
4 | responseXML Esta propriedade é usada quando a resposta do servidor é um arquivo XML. |
5 | status Fornece o status do objeto de solicitação Http como um número. Por exemplo, "404" ou "200". |
6 | statusText Fornece o status do objeto de solicitação Http como uma string. Por exemplo, "Não encontrado" ou "OK". |
Exemplos
O conteúdo do node.xml é o seguinte -
<?xml version = "1.0"?>
<Company>
<Employee category = "Technical">
<FirstName>Tanmay</FirstName>
<LastName>Patil</LastName>
<ContactNo>1234567890</ContactNo>
<Email>[email protected]</Email>
</Employee>
<Employee category = "Non-Technical">
<FirstName>Taniya</FirstName>
<LastName>Mishra</LastName>
<ContactNo>1234667898</ContactNo>
<Email>[email protected]</Email>
</Employee>
<Employee category = "Management">
<FirstName>Tanisha</FirstName>
<LastName>Sharma</LastName>
<ContactNo>1234562350</ContactNo>
<Email>[email protected]</Email>
</Employee>
</Company>
Recupere informações específicas de um arquivo de recurso
O exemplo a seguir demonstra como recuperar informações específicas de um arquivo de recurso usando o método getResponseHeader () e a propriedade readState .
<!DOCTYPE html>
<html>
<head>
<meta http-equiv = "content-type" content = "text/html; charset = iso-8859-2" />
<script>
function loadXMLDoc() {
var xmlHttp = null;
if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... {
xmlHttp = new XMLHttpRequest();
}
else if(window.ActiveXObject) // for Internet Explorer 5 or 6 {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlHttp;
}
function makerequest(serverPage, myDiv) {
var request = loadXMLDoc();
request.open("GET", serverPage);
request.send(null);
request.onreadystatechange = function() {
if (request.readyState == 4) {
document.getElementById(myDiv).innerHTML = request.getResponseHeader("Content-length");
}
}
}
</script>
</head>
<body>
<button type = "button" onclick="makerequest('/dom/node.xml', 'ID')">Click me to get the specific ResponseHeader</button>
<div id = "ID">Specific header information is returned.</div>
</body>
</html>
Execução
Salve este arquivo como elementattribute_removeAttributeNS.htm no caminho do servidor (este arquivo e node_ns.xml devem estar no mesmo caminho em seu servidor). Obteremos a saída conforme mostrado abaixo -
Before removing the attributeNS: en
After removing the attributeNS: null
Recuperar informações de cabeçalho de um arquivo de recurso
O exemplo a seguir demonstra como recuperar as informações do cabeçalho de um arquivo de recurso, usando o método getAllResponseHeaders() usando a propriedade readyState.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
<script>
function loadXMLDoc() {
var xmlHttp = null;
if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... {
xmlHttp = new XMLHttpRequest();
} else if(window.ActiveXObject) // for Internet Explorer 5 or 6 {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlHttp;
}
function makerequest(serverPage, myDiv) {
var request = loadXMLDoc();
request.open("GET", serverPage);
request.send(null);
request.onreadystatechange = function() {
if (request.readyState == 4) {
document.getElementById(myDiv).innerHTML = request.getAllResponseHeaders();
}
}
}
</script>
</head>
<body>
<button type = "button" onclick = "makerequest('/dom/node.xml', 'ID')">
Click me to load the AllResponseHeaders</button>
<div id = "ID"></div>
</body>
</html>
Execução
Salve este arquivo como http_allheader.html no caminho do servidor (este arquivo e node.xml devem estar no mesmo caminho em seu servidor). Obteremos a saída conforme mostrado abaixo (depende do navegador) -
Date: Sat, 27 Sep 2014 07:48:07 GMT Server: Apache Last-Modified:
Wed, 03 Sep 2014 06:35:30 GMT Etag: "464bf9-2af-50223713b8a60" Accept-Ranges: bytes Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip Content-Length: 256 Content-Type: text/xml