Erro no Ajax (Não Implementado)!
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() {// apenas quando o estado for "completado"
if (req.readyState == 4) {
// apenas se o servidor retornar "OK"
if (req.status ==200) {
document.getElementById('autocomplete_outros').innerHTML = req.responseText;
document.getElementById('autocomplete_outros').style.visibility = 'visible';} else {
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.
Discussão (2)
Carregando comentários...