Ajax Crossbrowser
Asynchronous Javascript XML. Não é uma tecnologia, e sim uma maneira de programar. Programar Ajax não é complicado. O complicado é desenvolver um código que seja compatível com diversos tipos de navegadores (Crossbrowser Programming).
Após pesquisar e testar, compartilho abaixo os trechos de código que implementei para Microsoft Internet Explorer e Mozilla Firefox.
Funções
A função loadXML é a que executa a chamada assíncrona e determina que função deverá tratar o retorno. Seus parâmetros são:
- url - tipo string; página que será carregada;
- sendHow - tipo string; forma de postagem dos parâmetros (GET ou POST);
- sendThis - tipo string; lista de parâmetros que serão enviados. Cada parâmetro deve ser seguido de seu valor, separado pelo sinal de '='. Ex. Test=1&Code=8 - se existir mais de um parâmetro, eles devem ser separados por '&';
- doThis - nome da função que deverá tratar o retorno da chamada assíncrona. Não se deve utilizar parênteses ou passar valores por parâmetro.
var objXMLDoc
function loadXML(url, sendHow, sendThis, doThis) {
objXMLDoc = null;
if (typeof window.ActiveXObject != 'undefined' ) {
objXMLDoc = new ActiveXObject("Microsoft.XMLHTTP");
objXMLDoc.onreadystatechange = function(){if ( objXMLDoc.readyState != 4 )
return ; doThis();};
}
else
{
objXMLDoc = new XMLHttpRequest();
objXMLDoc.onload =
function(){if (
objXMLDoc.readyState != 4 )
return ; doThis();};
}
objXMLDoc.open(
sendHow, url, true
);
if(sendHow=='POST'){
objXMLDoc.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded; charset=UTF-8');
}
objXMLDoc.send(
sendThis );
}
A função ajaxNoAction deverá ser utilizado nos casos em que nada deva ser
executado após o carregamento do arquivo assíncrono.
function ajaxNoAction(){}
Como utilizar
Você precisará criar duas funções: uma para chamar a função loadXML e outra para tratar o retorno. O retorno da chamada da função loadXML pode ser tratado como XML ou texto puro. Seguem dois exemplos:
Retorno em XML
objXMLDoc.responseXML.getElementsByTagName('document')[0].firstChild.data
Retorno em texto puro
objXMLDoc.responseText
0 Comments:
Postar um comentário
<< Home