Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera,
Eu peguei um código bem simples de como implementar Ajax. Testei sem problemas e de repente começou a apresentar um determinado erro. A mensagem de erro fala o seguinte:
Caracter: 4
Linha: 23
Erro: Não Implementado
Nesta linha 24, tenho o código: req.open("GET",url,true);
Segue abaixo o código completo!
[ajax.js]
function pesquisa(valor) {
url="autocomplete.asp?valor="+valor;
ajax(url);
if(valor == "")
document.getElementById('autocomplete_outros').style.visibility = 'hidden';
}
function ajax(url) {
req = null;
// Procura por um objeto nativo (Mozilla/Safari)
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange();
req.open("GET",url,true);
req.send(null);
// Procura por uma versão ActiveX (IE)
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange();
req.open("GET",url,true);
req.send();
}
}
}
function processReqChange() {if (req.status ==200) {
document.getElementById('autocomplete_outros').innerHTML = req.responseText;
document.getElementById('autocomplete_outros').style.visibility = 'visible';alert("Houve um problema ao obter os dados:n" + req.statusText);
}
}
}Post Mesclado
-----------------------------------------------------------------------------------
O que me intriga é que a execução do código está entrando no if (window.XMLHttpRequest) e não no else if (window.ActiveXObject), quando estou no Internet Explorer (IE7).
Eu acho que deveria entrar no segundo IF e não no primeiro, estou certo ou errado?
-----------------------------------------------------------------------------------
Post Mesclado
-----------------------------------------------------------------------------------
Eu percebi que quando eu executo a página no IE6, o objeto criado é o Msxml2.XMLHTTP
No IE7 ele se comporta como se fosse um browser do tipo Mozilla/Safari...
Executando a página no IE6 outro erro vem a tona que é na linha onde se lê req.open("GET",url,true);
-----------------------------------------------------------------------------------
Post Mesclado
-----------------------------------------------------------------------------------
Bom,
Eu identifiquei que na linha onde se lê req.onreadystatechange = processReqChange(); a existência do parenteses foi o motivo do nõa funcionamento do código. Ao removê-los, o código foi executado sem problemas. Eu não sabia desse detalhe.
Pelo que eu entendi, quando se chama uma função com parênteses, significa que deve ter algum parâmetro ou a função irá retornar algo. Não estou certo disso.
Carregando comentários...