Ir para conteúdo

POWERED BY:

Arquivado

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

DaRkShAfT

[Resolvido] Jquery + Ajax

Recommended Posts

Oi Galera,

 

Estou desenvolvendo uma aplicação em php... E estou com um problema ao implementar agora JQuery.

 

Acontece o seguinte no meu caso: eu abro uma página.php e consoante algumas variáveis como é normal apresento a página no browser. Tudo bem, acontece que eu agora desenvolvi código js com o jquery para carregar novamente a página, ou outras páginas passando novos parâmetros e assim modificando o que é necessário, e depois volto a apresentar...

 

Resume-se no entanto a isto(Ex.):

 

Chamo o ficheiro jquery dentro do <head> e depois chamo outro ficheiro onde eu estou declarando algumas funcoes.

 

Não estou a utilizar o $(document).ready() porque estou declarando funcoes o que acho correcto! Não sei se estou certo... http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif

 

function pressedButton(task) {
  switch(task) {
    case 'new': call_new(); break;
    ...
  }
}

function call_new() {
  $.ajax(
   ... vou chamar o mesmo ficheiro, mas com outras variaveis!
   sucess: function(resullt){
     $("body").html(result); // Aqui vou substituir todo o conteudo pelo novo conteudo.
    });
  ...
}

Eu estou apresentando o novo conteúdo(julgo que estou fazendo o correcto), mas acontece o seguinte: No menu por exemplo ao chamar novamente as funcoes nao acontece nada! E o código dentro de $().ready() também não funciona!

 

Existe alguma maneira de ultrapassar isto? O que estou fazendo não está correcto? Ou para fazer isto, eu tenho que manter a tag onde está o link(que chama a funcao) e somente actualizar os blocos de conteudos especificos e estes nao podem conter outros links que funcionem com JQuery??

 

Nao sei se me fiz explicar... Alguem me pode ajudar? Dar umas dicas?

 

Abraco[] http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais simples ainda:

 

Vou postar aqui um código que estive agora a fazer para testes(tudo inline):

 

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Teste Ajax.JQuery</title>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
	$("a").click(function(){
		loadPage();
	});
});
	//--> Ajax Get
	function ajaxGetUrl(url, data) {
	 // jQuery Ajax call
	 $.ajax({
		type: 'GET',
		url: url,
		dataType: 'html',
		timeout: 1000,
		data: data,
		error: function(){
			alert('Error loading document');
		},
		success: function(s){
			// do something with the data
			//$("body #resp").remove();
			$("body #resp").html(s);
		}
	 }); 
	}
	
	//--> Load Page
	function loadPage() {
		var url = "ajax.php";
		var data = [{"nome": "jquery"}];
		
		ajaxGetUrl(url, data);
	}
	
</script>
</head>

<body>

	<h2>Ajax.JQuery</h2>
    
    <br /><div id="resp">Isto é um teste! Data actual <?=date("Y-m-d H:i:s")?></div>
    <br /><br /><a href="#">Clique aqui</a>.

</body>
</html>

Quando eu clico no link ele lê o conteúdo deste mesmo ficheiro e carrega em #resp, mas o link Clique aqui que é apresentado não funciona! http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif

 

Ou seja, eu para fazer este exemplo sempre funcionando, teria que ter a pagina index.php, e o conteudo da div #resp noutro ficheiro ajax.php, e depois ler somente o ficheiro ajax.php e apresentar dentro da div #resp, aqui o link como nao é alterado fica sempre a funcionar...

 

É isso?

 

Estou fazendo um pouco de confusão com o JQuery...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente... funcoes Javascript carregadas com AJAX nao funcionam.

 

Tente atrelar dinamicamente o evento, usando live()

 

mas evite trazer codigo JS nas paginas carregadas, tente deixar tudo na pagina que chamou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente... funcoes Javascript carregadas com AJAX nao funcionam.

 

Tente atrelar dinamicamente o evento, usando live()

 

mas evite trazer codigo JS nas paginas carregadas, tente deixar tudo na pagina que chamou.

 

Pois bem me parecia... Então mas como é feito por exemplo o gmail? Ele actualiza conteúdo que depois ao ser clicado vai sempre funcionar...

 

Eu numa listagem de registos, por exemplo posso só actualizar a página que contém os registos, mas em cada registo eu posso sempre clicar nele e editar por exemplo... Vai ter sempre que correr código js na resposta. http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif

 

Vou analisar essa funcao live()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já testei o live() e funciona na perfeição! Vou ter que rever todo o meu código...

 

Estava pensando que se podia desenvolver o sistema e só depois aplicar o JQuery, isto para caso o javascript esteja desabilitado, o sistema funcionar sempre! :)

 

Vou ter que rever os métodos de criação da aplicação para contemplar esta trampa toda!

 

Obrigado na mesma! Mais sugestões são aceites... []

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.