Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

C0Y073

XmlHttpRequest não funciona no IE7

Recommended Posts

pessoal tenho um script de envio de formulário com ajax, ele funciona em todos navegador menos no IE na vers]ao 7, no IE 9 roda normal e nos demais browser

segue o script abaixo

 

try{
       xmlhttp = new XMLHttpRequest();
}catch(ee){
       try{
               xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
       }catch(e){
               try{
                       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
               }catch(E){
                       xmlhttp = false;
               }
       }
}

fila=[];
ifila=0;
errBoxPre = '<table width="300" height="50" border="0" style="font-size: 14px; font-family: Arial, Helvetica, sans-serif; color: #990000; background-color: #FFCCCC; border: 1px solid #990000;"><tr><td align="center">';
errBoxPos = '</td></tr></table>';

function carrega(url, destino){
       document.getElementById(destino).innerHTML="<center><br><img SRC='img/ajax-loader.gif' alt='Loading' /><br><br>Processando informações</center>";
       fila[fila.length]=[url,destino];
       if((ifila+1)==fila.length)ajaxRun();
}

function ajaxRun(){
       url        = fila[ifila][0];
       destino    = fila[ifila][1];
       xmlhttp.open("POST", url, true);
       xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; iso-8859-1");
       xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
       xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
       xmlhttp.setRequestHeader("Pragma", "no-cache");
       xmlhttp.onreadystatechange=function() {
               if (xmlhttp.readyState==4){
                       if(xmlhttp.status != 200){
                               switch(xmlhttp.status){
                                       case 400:
                                               document.getElementById(destino).innerHTML=errBoxPre+"ERRO 400<br />Erro de sintaxe."+errBoxPos;
                                               break
                                       case 401:
                                               document.getElementById(destino).innerHTML=errBoxPre+"ERRO 401<br />Não autorizado."+errBoxPos;
                                               break
                                       case 403:
                                               document.getElementById(destino).innerHTML=errBoxPre+"ERRO 403<br />Acesso negado."+errBoxPos;
                                               break
                                       case 404:
                                               document.getElementById(destino).innerHTML=errBoxPre+"ERRO 404<br />Arquivo não encontrado."+errBoxPos;
                                               break
                                       case 500:
                                               document.getElementById(destino).innerHTML=errBoxPre+"ERRO 500<br />Erro interno do servidor."+errBoxPos;
                                               break
                                       case 501:
                                               document.getElementById(destino).innerHTML=errBoxPre+"ERRO 501<br />Não suportado."+errBoxPos;
                                               break
                                       case 502:
                                               document.getElementById(destino).innerHTML=errBoxPre+"ERRO 502<br />Servidor temporariamente indisponível."+errBoxPos;
                                               break
                                       case 503:
                                               document.getElementById(destino).innerHTML=errBoxPre+"ERRO 503<br />Erro no retorno dos dados."+errBoxPos;
                                               break
                               }
                       } else {
                               texto=unescape(xmlhttp.responseText.replace(/\+/g," "));
                               document.getElementById(destino).innerHTML=texto;
                       }
                       ifila++;
                       if(ifila<fila.length)setTimeout("ajaxRun()",20);
               }
       }
       xmlhttp.send(url);
}

function enviaForm(frmNome, url, destino){
       f = document.getElementById(frmNome);
       var query=url;
       for (i=0;i<f.elements.length;i++){
               query += i==0 ? '?' : '&';
               query += f.elements[i].name + '=' + f.elements[i].value;
       }
       carrega(query, destino);
}

 

so reforçando que o IE 7 usa o XMLHttpRequest não o ActiveXObject

 

alguem tem uma solução ?

 

quando abro no ie 7 e envio o form so fica a msg de "aguardando" ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta adaptar isso:

 

function GetXMLHttp() {
if(navigator.appName == "Microsoft Internet Explorer") {
resp = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
resp = new XMLHttpRequest();
}
return resp;
}

var xmlhttp = GetXMLHttp();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dar suporte sim, ok, sei disso.

 

Mais o caso é para saber se ele está reconhecendo o teu script, nao tenho o IE aqui para testar isso pois uso mac, pelo menos, testou do jeito que estou tentando te ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dar suporte sim, ok, sei disso.

 

Mais o caso é para saber se ele está reconhecendo o teu script, nao tenho o IE aqui para testar isso pois uso mac, pelo menos, testou do jeito que estou tentando te ajudar?

 

testei sim amigo, antes de postar aqui procurei varias soluções também nenhuma deu certo :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é outro: você NÃO DECLAROU a variável xmlhttp.

Faça assim:

var xmlhttp;
try{
       xmlhttp = new XMLHttpRequest();
}catch(ee){
       try{
               xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
       }catch(e){
               try{
                       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
               }catch(E){
                       xmlhttp = false;
               }
       }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.