Problemas com Ajax e IE

8 respostas
ramilani12

Olá Pessoal tenho enfrentado problemas com Ajax e IE 6 , requisições simples de CRUD

A requisição funciona perfeita mas ao atualizar o div o IE não atualiza e me gera um erro com sua famosa de tela debug o erro segue em anexo

Realizando testes com Firefox funciona perfeitamente

Como estou realizando o processamento assíncrono:

function processRequest() 
	  {
			
			if (http_request.readyState == 2)
				document.getElementById(div).innerHTML = "<img >";
			
			
			if (http_request.readyState == 4) 
			{
					  if (http_request.status == 200 || http_request.status == 0) 
					  {
						document.getElementById(div).innerHTML = http_request.responseText;
					  }
					  else 
					  {
						alert("Problemas com a requisição\n" +
									  "Motivo: " + http_request.statusText);
				      }
		    }
      }

Não entendo prq IE não entende essa solicitação

Alguem já enfrentou este problema?

8 Respostas

M

Teste colocar o seguinte código antes:

try{
    http_request = new XMLHttpRequest();// Mozilla, Safari, Firefox, etc...
    try {
        if (http_request.overrideMimeType) {
            //Se possivel, ignora cabecalho usado pelo servidor e forca o padrao "text/xml". Alguns navegadores exigem esse padrao e pode dar erro se o servidor nao utilizar ele
            http_request.overrideMimeType('text/html; charset=iso-8859-1');
        }
    } catch (e1) { }
}catch(e2){
    try{
        http_request = new ActiveXObject("Msxml2.XMLHTTP");// Internet Explorer
    }catch(e3){
        try{
            http_request = new ActiveXObject("Microsoft.XMLHTTP");// Internet Explorer
        }catch(e4){
            //tratamento para alguma outra forma de implementar XMLHTTP
            http_request = false;
        }
    }
}
ramilani12

Veja a forma que estou criando o objeto XMLHttpRequest:

function getXHR()
	  {
			var newReq = null;
			if(window.XMLHttpRequest) 
		    {
				  try 
				  {
					newReq = new XMLHttpRequest();
				  }
				  catch(e) 
				  {
					newReq = false;
				  }
			}
			else if(window.ActiveXObject) 
			{
				  try 
				  {
					newReq = new ActiveXObject("Msxml2.XMLHTTP");
				  }
				  catch(e) 
				  {
						try 
						{
						   newReq = new ActiveXObject("Microsoft.XMLHTTP");
						}
						catch(e) 
						{
						  newReq = false;
						}
				  }
			 }
	  return newReq;
      }

      var http_request = null;
      function makeRequest(query , divRequest) 
	  {
		 div = divRequest;
		 if (http_request == null)
		 {
		 	http_request = getXHR();	
		 }
		 else if (http_request)
		 {
		 	http_request.abort();		
		 }
		 if(http_request) 
		 {
          http_request.onreadystatechange = processRequest;
          http_request.open('POST', '/app/applications.avaliacaoPd.admin.AvaliacaoAdmin', true);
		  http_request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
          http_request.setRequestHeader('Content-length', query.length);
          http_request.send(query);
          
         }
        else
		{
          alert("Seu browser não suporta AJAX");
        }
      }
ramilani12

O problema que ele não atualiza o div:
Aqui ele gera o erro:

if (http_request.status == 200 || http_request.status == 0) 
{
    document.getElementById(div).innerHTML = http_request.responseText;
}
else 
 {
alert("Problemas com a requisição\n" +
 "Motivo: " + http_request.statusText);
}
M

Eh, aparentemente está correto… tente colocar sua função assim, por desencargo de consciencia:

if (http_request.status == 200 || http_request.status == 0) 
 {
     document.getElementById(div).innerHTML = unescape(http_request.responseText.replace(/\+/g," "));
 }
 else 
  {
 alert("Problemas com a requisição\n" +
  "Motivo: " + http_request.statusText);
 }
ramilani12

E pior que não funcionou … :roll:

Não entendo esse problema

M

Este DIV esta dentro de uma tag <TABLE> ?

Você esta tentando jogar um FORM dentro de outro ?

ramilani12

Minha pagina está separa por vários div´s esses div´s estão dentro de um form

Seria isso o problema?

D

Eu estava com o mesmo problema apresentado.
dica do “mauro_schneider” funcionou.
Era um FORM dentro de outro FORM.
Coloquei a TAG de fechamento do primeiro FORM fora do meu “looping”, que que os dados do looping tambem geram um FORM.

Grato

Criado 8 de junho de 2007
Ultima resposta 28 de out. de 2007
Respostas 8
Participantes 4