Ajax 2 – Criando o Objeto de Requisição

Olá a todos. Neste texto iremos finalmente entrar na parte prática do ajax, onde ensinarei a criar o objeto de requisição XMLHttp object que é a base de todo sistema ajax(leia o texto “Ajax – Conhecendo a Tecnologia” para maiores informações). Chega de conversa e vamos ao que interessa.

Antes porém de uma parte mais prática, se faz necessária uma explicação. Os navegadores Microsoft, por serem baseados em Jscript, interpretam o objeto de requisição como um ActiveXObject(quem não lembra das janelinhas do IE avisando risco de segurança por causa de scripts), e os outros navegadores, por serem baseados em Javascript, interpretam o objeto como sendo um Objeto do núcleo da linguagem, fazendo com que a gente tenha que testar o tipo de navegador da pessoa para criarmos o objeto de forma que funcione em qualquer navegador compatível com a tecnologia.

Criando o Objeto em navegadores microsoft:

var objetoXMLHttp = false;

try {

objetoXMLHttp= new ActiveXObject(“Msxml2.XMLHTTP”);

} catch (e) {

try {

objetoXMLHttp = new ActiveXObject(“Microsoft.XMLHTTP”);

} catch (e2) {

objetoXMLHttp = false;

}

}

Msxml2.XMLHTTP – Navegadores microsoft mais atuais(IE5+, Jscript 5.0)

Microsoft.XMLHTTP – Navegadores microsoft mais antigos(IE4-)

Os navegadores Microsoft possuem duas versões diferentes do objeto, este código tenta criar primeiramente um objeto do tipo Msxm12.XMLHTTP, que é implanteado pelos navegadores Microsoft mais atuais e é mais comum. Se não obtiver sucesso ele tenta criar um objeto do tipo Microsoft.XMLHTTP, que é implantado por navegadores Microsoft mais antigos, meio raro de se encontrar mas um pouco de compatibilidade não mata ninguém. Caso não obtenha sucesso em nenhuma das tentativas, é sinal que o navegador não é Microsoft, e devemos ciar o objeto de outra forma:

objetoXMLHttp = new XMLHttpRequest();

Esse bloco de código cria o objeto compatível todos os outros navegadores que suportam o mesmo e não são Microsoft.

Agora que você já sabe as diferenças básicas entre o objeto entre os navegadores, vamos criar uma função que nos retorne o objeto compatível com qualquer navegador que suporte o mesmo:

function criarObjetoXMLHTTPRequest() {

var objetoXMLHttp;

/*@cc_on

@if (@_jscript_version >= 5)

try {

objetoXMLHttp = new ActiveXObject(“Msxml2.XMLHTTP”);

} catch (e) {

try {

objetoXMLHttp = new ActiveXObject(“Microsoft.XMLHTTP”);

} catch (e) {

objetoXMLHttp = false;

}

}

@else

objetoXMLHttp = false;

@end @*/

if (!objetoXMLHttp && typeof XMLHttpRequest != ‘undefined’) {

try {

objetoXMLHttp = new XMLHttpRequest();

} catch (e) {

objetoXMLHttp = false;

}

}

return objetoXMLHttp;

}

Uma parte do código requer um pouco de atenção extra, o bloco “/*@cc_on”, que ativa o suporte de compilação condicional. O código de compilação condicional deve estar sempre dentro de um comentário, isso permite que navegadores que não suportam compilação condicional possam ignorar esta parte do script, como compilação condicional é recurso exclusivo de Jscript, somente navegadores IE irão ler esta parte do código. Isso torna o script compatível com todas as versões do IE que suportam o objeto e evita que navegadores baseados no gecko possam interromper o script ao tentar criar um objeto existente somente no internet explorer.

Queria deixar claro que é necessário um pouco de conhecimento de Javascript para conseguir entender corretamente esta seqüência de textos.

OBS: Tratamento de exceções não é suportado em versões de Jscript inferiores a 5, mas foi usado um try/catch da mesma forma quando é detectada esta versão para evitar erros em navegadores atuais, e navegadores mais antigos irão ignorar o bloco try/catch e criar o objeto corretamente.

Anderson Triacca – anderson@andersontriacca.com – www.andersontriacca.com

Escrito por anderson on abril 19, 2008. Arquivado em Javascript. Você pode seguir as respostas a esse artigo pelo RSS 2.0. Você pode deixar respostas para esse artigo

1 resposta a Ajax 2 – Criando o Objeto de Requisição

  1. Ae anderson, fique perdidaço

    Mas como você avisou é porque não tenho conhecimento em javascript u.u

    Então queria pedir alguns links que falem sobre javascript que me ajudem nas continuidades dos seus artigos, pode ser?

    Vlw ;)

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>