Jump to content
Ivan22

Problema com Ajax

Recommended Posts

Ivan22

Boas pessoal

podiam me dar uma ajudinha aqui nisso, não consigo mesmo resolver  :P

Tenho um Menu que quando é clicado retorna para um div

uma pagina html e as respectivas funções Javascript nela criada. fiz isto por Ajax

o problema é, quando alterno as paginas

dá erro no browser que a função Javascript está  undefined.

Penso que de certa forma, isto está a ser guardado em cache

e não respeita o retorno de pagina a pagina

Este é um pequeno exemplo do meu codigo:

<div class="actualizar" ficheiro="pag_A.php">Chamar Pagina A</div>

<div class="actualizar" ficheiro="pag_B.php">Chamar Pagina B</div>

<div id="retorno">

</div>

<script>

$(".actualizar").click(function(){

var pagina=$(this).attr("ficheiro");

        $.ajax({

type: "GET",

url: pagina,

data: "",

cache: false,

success: function(msg){

$('#retorno').html(msg);

}

});

});

</script>

Share this post


Link to post
Share on other sites
Ivan22

pera, que isto é confuso de explicar xD

1º - Na minha pagina principal, eu tenho uma SelectBox

que quero que ela tenha diferentes comportamentos

mediante as funções JS que são chamadas para pagina.

2º - Criei uma div para receber as funções JS.

3º - Existe um menu que permite escolher qual ficheiro a ser retornado para div

Nos meus ficheiros tenho diferentes funcões Javascript

por exemplo:

Quando chamo o ficheiro A, ele carrega para pagina o JS respectivo.

Agora quando for a chamar o ficheiro B, o JS do ficheiro A continua lá.

O browser dá erro, quando faço change a SelectBox, continua a chamar as funções do ficheiro A

É possível que o retorno vindo do AJAX cause dependências?

acho mesmo estranho isto acontecer, ate pensei que fosse problema de cache.

Share this post


Link to post
Share on other sites
taviroquai

Debug...

Corre isso no Firefox com o Firebug instalado e activo e coloca aqui os erros que dá.

Share this post


Link to post
Share on other sites
Ivan22

ok

afinal, os erros não são de funções que ele não reconhece, desculpem,

mas sim dos objectos que são criados pelo ficheiro.

1º erro -> $("#link").val() is undefined

<meta name="revisit-after" content="10" />

2º erro -> $("#codigo").val() is undefined

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" >

esses id's são textfields, que os ficheiros retornam.

afinal devo ter é um problema no header desses ficheiros

Share this post


Link to post
Share on other sites
Ivan22

humm

nas minhas paginas de retorno não estava definir nenhum header

pensei que o problema seria isso.

mas eu agora ja adaptei e continuam a dar os mesmos erros...

será que tenho dar alguma especificação no header por usar objectos vindos do JS?

header dos ficheiros estão como:

<!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" xml:lang="pt" lang="pt">

<head>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" >

<title></title>

<meta name="revisit-after" content="10" />

</head>

Share this post


Link to post
Share on other sites
taviroquai

Estás a colocar isso nas páginas de retorno??? Não coloques...

Com AJAX deves devolver apenas partes de xhtml... por exemplo:

<p>Paragrafo</p>
<ul id="lista"><li>Item1</li><li>Item2</li></ul>
<script type="text/javascript>
    function ola() { alert('Olá mundo'); }
    ola();
</script>

Se queres especificar headers HTTP usa a função header() do PHP :(

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.