Ir para conteúdo

POWERED BY:

Arquivado

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

danielnsilva

xmlhttp(ajax)

Recommended Posts

Pessoal,

 

Estou desenvolvendo uma aplicação utilizando ajax, mas deparei-me com um problema.

 

A aplicação está funcionado bem, o problema é que caso o conteúdo trazido via XMLHTTPRequest tenha um código javascript ele não é executado.

 

Exemplo:

<script>var msg = 'mensagem!';alert(msg);</script><div>  <p>alguma coisa</p></div>

O conteúdo da "div" é mostrado corretamente, porém o javascript não é executado?

 

Alguma idéia?

 

[]s

Daniel

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é... eu tentei isso tambem e nao rolou, passar js por ajax, acho que é porque o browser le todo o js antes de comecar a execucao.. mais se for algo simples você pode usar algo assim:<div onload="java script:alert('oi');"></div>nao testei, mais deve funfar... []'sps: se isso é uma tentativa de esconder o js, nao adianta nao ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

não, red_neck, não é...o problema surgiu quando precisei criar uma array com resultado de uma consulta no BD.Tentei o <http://prototype.conio.net> mas não consegui usar.... Pelo que li em <http://blogs.ebusiness-apps.com/jordan/pages/Prototype%20Library%20Info.htm> acho que ele faz o que eu quero... mas como usá-lo?! Não tem documentção.O kra que desenvolveu disse que não tem tempo para fazer documentação e que o código é bem fácil de entender! Mas eu não consegui....[]sDaniel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que o ideal é você executar esse js direto na propriedade XMLHTTPRequest.onreadystatechange. Teria como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tb estou passando pelo mesmo problema, só q no meu caso eu tenho um menu esquerdo e exibe conteúdo no lado direito. Mas o conteúdo que é resgatado pelo XMLHttpRequest (no lado direito) não executa o JavaScript contido nele. Quando eu executo como uma página normal o conteúdo exibido no lado direito, o JS funciona, mas no XMLHttpRequest não.

 

Procurei internet afora, gastei boas horas e não consegui nada! http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

Todas as documentações q encontrei falam das mesmas coisas.

 

Então tb estou no aguardo d uma luz sobre o assunto. Qualquer idéia ta valendo.

:)

 

OBS: sobre o link indicado pela olimpia: http://www.tableless.com.br/ajaxdemo/, está fora do ar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, ele não vai executar mesmo...o q você poderia fazer é separar o javascript q o ajax vai retornar em uma outra chamada, dai da um eval no retorno dele........eval(ajax.responseText)dai ele vai interpretar a string como codigo javascriptsó q se tiver html dentro, ai da xabú.... tenta fazer um esquema falou

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ae pessoal,

 

O javascript é executado SIM, o problema está no modo de como chamar a função.

 

Também tive vários problemas com isso, mas conseguimos resolver da seguinte forma:

 

<img src="imagem.gif" onLoad="javascript:alert('TESTE QUE FUNCIONA!');" width="1" height="1"/>

Da mesma forma, tentei colocar o evento onLoad em um div e não rolou. Alguém sabe por que?

 

Espero ter ajudado.

 

[ ]'s

Chu

Compartilhar este post


Link para o post
Compartilhar em outros sites

O onload não funciona pq você insere texto dentro do div e não faz um load nele.Assim como o "Alexander Chu" comentou, ele executa sim, depende da maneira como você está chamando, se for com onload esquece que não vai mesmo, a não ser q você carregue um iframe com ajax dentro da página, daí o iframe fará onload, ou seja, depende muito mesmo da maneira que você está chamando o javascript, agora por exemplo se você tem uma chamada ajax, dentro de um código que o ajax está carregando dentro da página, você precisa colocar em esquema de fila as requisições para que ele carregue depois de o ajax montar a página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei a solução:O Ajax só executa o JS depois de carregar todo o HTML. Por isso, tem que colocar o JS dentro do seguinte código:xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { < coloque o seu JS aqui > }}Esse código verifica se houve uma requisição de mudança no Ajax e se a página estiver carregada (xmlhttp.readyState == 4), ele executa o JS.Valeu aos que tentaram ajudar!!!Abração

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com o mesmo problema... Por enquanto a solução tem sido deixar todos os scripts na página principal e nos conteúdos carregados dinamicamente deixar só as chamadas às funções js.É claro que não é uma boa solução, principalmente se você tem um site médio ou grande e que usa bastante js (imagina o tamanho da página principal!), então continuo procurando uma alternativa...Alguém já tentou separar o js do html e usar o "eval" no js (como sureriram)? Estou explorando algumas idéias aqui, entre elas o esquema com o "eval e se funcionar eu posto aqui.

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.