1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Executar funções JS em página carregada com ajax

Discussão em 'Web Development' iniciada por rdgomes, 16 de Dezembro de 2008. (Respostas: 6; Visualizações: 2938)

  1. rdgomes

    rdgomes Power Member

    Boas

    Estou a fazer um programa em php + javascript.

    O que eu quero é colocar numa div, na página inicial, conteúdo que ficará numa estrutura em árvore.

    Do género:

    Código:
        <script type="text/javascript">
            <!--
    
            e = new dTree('e');
    
            e.add(0,-1,'');
            e.add(1,0,'Menu1','example01.html');
            e.add(2,1,'submenu1','sub01.html');
    
            document.write(e);
    
            //-->
    
        </script>
    
    Mas esses dados devem ser carregados através de uma base de dados, usando php e mysql, ficando algo assim:


    Código:
        <script type="text/javascript">
            <!--
    
            e = new dTree('e');
    
            e.add(0,-1,'');
    
                <?php
                    $sql=...
                    $result=mysql_query(...)
                    while ($row = pg_fetch_row($result))
                   {
                          echo "e.add($row[0], row[1], $row[2]', $row[3]);";
                    } 
                 ?>
    
            document.write(e);
    
            //-->
    
        </script>
    
    Até aqui tudo bem, mas como são muitos dados eu queria que os dados fossem carregados depois da pagina, usando ajax.
    O problema é que as funções javascript usadas para a representação em árvore não são executadas depois do ajax.
    Além me pode ajudar?

    Origado
     
    Última edição: 16 de Dezembro de 2008
  2. whee_man

    whee_man Power Member

    colocas o codigo javascript dentro de uma funçao, e no final da recepçao dos dados via ajax chamas essa função.
     
  3. rdgomes

    rdgomes Power Member

    Como? Tentei usar XML para recolher os dados da BD e depois usava as funções JS, mas não funcionou. Depois do ajax o código javascript relativo ao script dtree não funciona. Aparecem os dados isoladamente na página mas o javascript não funciona nem ficavam com a formatação css, para além de que o restante conteúdo da página não aparecia.

    De qualquer modo obrigado pela resposta.
     
    Última edição: 16 de Dezembro de 2008
  4. rdgomes

    rdgomes Power Member

    Será que existe alguma maneira alternativa de ter as funções dtree no html principal e o ajax apenas retomar os dados? Se sim como?
     
  5. rdgomes

    rdgomes Power Member

    Pelo que percebi, o problema está no document.write. Usando ajax não funciona. Alguém sabe como posso contornar o problema?

    Cumps
     
  6. whee_man

    whee_man Power Member

    podes criar uma tag no codigo html
    Código:
    <div id="exemplo"></div>
    Depois de receberes os dados via ajax envias os dados para dentro da div criada
    Código:
    document.getElementById("exemplo").innerHTML = xmlhttp.responseText;
     
  7. rdgomes

    rdgomes Power Member

    Funcionou assim:

    Código:
    d = new dTree('d');
    
    obj=ajax.responseXML;
    
    var dataArray   = obj.getElementsByTagName("elemento");
    
     if(dataArray.length > 0) {
             //percorre o arquivo XML paara extrair os dados
             for(var i = 0 ; i < dataArray.length ; i++) {
                var item = dataArray[i];
                //contéudo dos campos no arquivo XML
                var id    =  item.getElementsByTagName("id")[0].firstChild.nodeValue;
                var nome =  item.getElementsByTagName("nome")[0].firstChild.nodeValue;
                var id_ant    =  item.getElementsByTagName("ant")[0].firstChild.nodeValue;
                            
                            d.add(id,0,nome);
    }
    
    document.getElementById("registo_ajax").innerHTML = d
    
    Que burrice a minha!!!!
    Obrigado whee_man, salvaste-me o emprego!!!
     
    Última edição: 17 de Dezembro de 2008

Partilhar esta Página