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

Ajax dentro de Ajax


Guest --Vinicius --

Pergunta

Guest --Vinicius --

Olá a todos!

Estou precisando de uma ajuda meio urgente pro meu trabalho em relação ao AJAX.

Seguinte:

Estava utilizando o script 'TableKit' (http://www.millstream.com.au/upload/code/tablekit/) sem problemas com páginas em PHP. Normal..

Depois precisei mudar o sistema do meu site.

Agora há uma página fixa e as demais páginas são chamadas via ajax e inseridas em uma div ('conteúdo')

O que acontece é que a tabela não é mais reordenada pelo TableKit.

Função AJAX que eu utilizo:

// JavaScript Document

function AJAX() {

    this.Updater=carregarDados;

    

    function carregarDados (caminhoRetorno,idResposta,metodo,mensagem) {

        var conteudo=document.getElementById(idResposta)

        conteudo.innerHTML= mensagem;

        var xmlhttp = getXmlHttp();

        //Abre a url

        xmlhttp.open(metodo.toUpperCase(), caminhoRetorno,true);

        //Executada quando o navegador obtiver o código

        xmlhttp.onreadystatechange=function() {

            if (xmlhttp.readyState==4) {

                //Le o texto

                var texto = xmlhttp.responseText;

                //Desfaz o urlencode

                texto = texto.replace(/\+/g," ");

                texto = unescape(texto);
                
                //Exibe o texto no div conteúdo

                var conteudo=document.getElementById(idResposta);

                conteudo.innerHTML=texto;
                
                // Extrai e executa os javascript dentro das páginas carregadas
                extraiScript(texto);
            }

        }

        xmlhttp.send(null);

    }

}
Sei que o AJAX simplesmente traz o texto da requisição e insere (com o INNERHTML) dentro da div e assim, não executaria códigos javascripts vindos dessa página. Resolvi isso utilizando essa função que achei em um fórum:
function extraiScript(texto) {
    var ini, pos_src, fim, codigo;
    var objScript = null;
    ini = texto.indexOf('<script', 0)
    while (ini!=-1) {
        var objScript = document.createElement("script");
        //Busca se tem algum src a partir do inicio do script
        pos_src = texto.indexOf(' src', ini)
        ini = texto.indexOf('>', ini) + 1;

        //Verifica se este e um bloco de script ou include para um arquivo de scripts
        if (pos_src < ini && pos_src >=0) {        //Se encontrou um "src" dentro da tag script, esta e um include de um arquivo script
            //Marca como sendo o inicio do nome do arquivo para depois do src
            ini = pos_src + 4;
            //Procura pelo ponto do nome da extencao do arquivo e marca para depois dele
            fim = texto.indexOf('.', ini)+4;
            //Pega o nome do arquivo
            codigo = texto.substring(ini,fim);
            //Elimina do nome do arquivo os caracteres que possam ter sido pegos por engano
            codigo = codigo.replace("=","").replace(" ","").replace("\"","").replace("\"","").replace("\'","").replace("\'","").replace(">","");
            // Adiciona o arquivo de script ao objeto que sera adicionado ao documento
            //alert(codigo);
            objScript.src = codigo;
        } else {                    //Se não encontrou um "src" dentro da tag script, esta e um bloco de codigo script
            // Procura o final do script
            fim = texto.indexOf('</script>', ini);
            // Extrai apenas o script
            codigo = texto.substring(ini,fim);
            // Adiciona o bloco de script ao objeto que sera adicionado ao documento
            objScript.text = codigo;
        }
        //Adiciona o script ao documento
        document.body.appendChild(objScript);
        // Procura a proxima tag de &lt;script
        ini = texto.indexOf('&lt;script', fim);
        //Limpa o objeto de script
        objScript = null;
    }
}
e chamando essa função no retorno da requisição AJAX, assim:
//Exibe o texto no div conteúdo

var conteudo=document.getElementById(idResposta);

conteudo.innerHTML=texto;

// Extrai e executa os javascript dentro das páginas carregadas
extraiScript(texto);

Acontece que ainda sim o TableKit não reordena a tabela pra mim.

Quando eu coloco um 'alert' dentro de um dos JS carregador pelo tablekit ele executa normalmente, mas o restante do script ele parece ignorar.

Alguém sabe como eu faço pra rodar esse script dentro de uma requisição do ajax?

Agradeço qualquer ajuda!

Vinicius Arantes

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...