Ir para conteúdo
Fórum Script Brasil
  • 0

Probleas Com Ajax Em Internet Explorer 6 No Windows 2000


Spyder.RV

Pergunta

Antes de mais nada, se já tiver algum post aqui com esse mesmo assunto, me desculpem pois não achei nada quando pesquisei...

preciso que avaliem o código abaixo:

PS! Tá funcionando beleza no Firefox, IE5/6/7 (No Windows XP). No IE para Windows 2000 o navegador trava e dá aquela msg chata pra enviar relatórios de erro pra M$.

Esse script é para carregar páginas dinamicamente, e se tiver algum script em javascript, executa o mesmo... É claro que no caso a página só pode ter um script... Mas como eu disse, não tem problema e tá funcionando muito bem nos outros navegadores, menos nessa versão específica... Pode ser que tá com problema nas versões para windows 98/95/Me, mas não testei ainda...

O Erro ocorre na linha: document.getElementById(destObj).innerHTML=ajResponse; da função makeAjaxRequest mais abaixo...

O pior é que eu alterei essa linha pra mostrar o conteúdo de ajResponse com um alert(ajResponse); e rodou de boa...

alguém pode me ajudar a entender o que tá ocorrendo???

Segue o código:

/*

##########################################################################################
## Rotinas AJAX para carga de conteúdo dinâmicamente sem a                              ##
##     necessidade de recarregar a página toda, somente a área que está sendo alterada  ##
##                                                                                      ##
## Autor : Wemerson C. Guimarães                                                        ##
## Data  : 01/07/2007                                                                   ##
## Versão: 1.01                                                                         ##
## Data  : 01/07/2007                                                                   ##
##########################################################################################

*/


function ajaxInit() 
{
    var HTTP_REQUEST;

    try
    { 
        HTTP_REQUEST = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e) 
    {
        try
        { 
            HTTP_REQUEST = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(ex) 
        {
            try 
            {
                HTTP_REQUEST = new XMLHttpRequest();
                HTTP_REQUEST.overrideMimeType('text/html');
            }
            catch(exc) 
            {
                alert("Esse browser não tem recursos para uso do Ajax");
                HTTP_REQUEST = null;
            }
        }
    }
    return HTTP_REQUEST;
}

function makeAjaxRequest(url, destObj, parametros)
{
    ajax = ajaxInit();
  if(ajax)
    {

        parametros = "?" + Math.ceil( Math.random() * 100000 ) + 
                                 (
                                        parametros != null ? 
                                            parametros 
                                        : 
                                            ''
                                    );

        ajax.open("GET", url + ".php" + parametros, true);

        ajax.onreadystatechange = function()
        {
            if(ajax.readyState == 4)
                if(ajax.status == 200)
                {
                    var ajResponse = ajax.responseText;
                    var iniScript = ajResponse.indexOf('<script language="javascript" type="text/javascript">');
                    document.getElementById(destObj).innerHTML=ajResponse; // O erro ocorre nessa linha...
                    if (iniScript > 0)
                    {
                        iniScript += 53;
                        var fimScript = ajResponse.indexOf('</script>');
                        var scriptCode = ajResponse.substring(iniScript, fimScript);
                        var scriptObj = document.createElement('script');
                        scriptObj.setAttribute('language', 'javascript');
                        scriptObj.text = scriptCode;
                        document.body.appendChild(scriptObj);
                    }
                }
                else 
                {
                    alert(ajax.statusText);
                }
        }
        ajax.send(null);
    }
}

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Você provavelmente está passando como segundo argumento da função makeAjaxRequest(url, destObj, parametros) uma DIV, não é?

Bom, tenha certeza de que a DIV tenha sido criada antes de você chamar a função.

Com certeza...

A DIV está certinha... tanto que noutras versões do IE e no firefox tá funcionando legal......

Link para o comentário
Compartilhar em outros sites

  • 0
substitui akela linha por estas:

if (document.getElementById(destObj))
     document.getElementById(destObj).innerHTML=ajResponse;
else
   alert("O objeto '" + destObj + "' não foi encontrado.)

Este código é irrelevante pois como a DIV passada para destObj está criada corretamente, o teste lógico vai dar verdadeiro executando então o document.getElementById(destObj).innerHTML=ajResponse e dando o erro normalmente...

Creio que você passou esse código assim para que seja feito um teste pra ver se a DIV passada para a função estava criada corretamente no arquivo html... Pois então, ela com certeza está criada corretamente e só dá o erro no Internet Explorer no Windows 2000. No XP dá certo, no 98/95/me não testei...

Link para o comentário
Compartilhar em outros sites

  • 0
Creio que você passou esse código assim para que seja feito um teste pra ver se a DIV passada para a função estava criada corretamente no arquivo html...

Sim, foi por isso. Mas você chegou a testar?

De qualquer forma, experimenta este ActiveX: ActiveXObject("MSXML2.XMLHTTP.3.0");

Link para o comentário
Compartilhar em outros sites

  • 0

Cheguei até a pensar que era algum problema com o executavel do IE entãoi testei em mais 3 pcs com IE 6 e Windows 2000 e deu o mesmo problema..

Creio que você passou esse código assim para que seja feito um teste pra ver se a DIV passada para a função estava criada corretamente no arquivo html...

Sim, foi por isso. Mas você chegou a testar?

De qualquer forma, experimenta este ActiveX: ActiveXObject("MSXML2.XMLHTTP.3.0");

Mesma coisa, depurei o código na linha que dá o erro, mudando ela para:

alert(document.getElementById(destObj).innerHTML); --> Mostrou o HTML da DIV normalmente...

alert(ajResponse); --> Mostrou o conteúdo carregado pelo AJAX nromalzim também...

Editado por Spyder.RV
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...