Problema com AJAX + import js

12 respostas
M

Fala galera…

Estou chamando uma página por ajax e colocando seu conteúdo em um DIV. Dentro da página que estou chamando faço o import de alguns arquivos js. O problema é que não está sendo executado este import.

Alguém já passou por este problema? Não queria colocar todos os imports na página que fez a requisição por ajax.

Atenciosamente,
Marcelo Madeira

12 Respostas

J

Essa é uma das maneiras de carregar arquivos de script:

<SCRIPT language="JavaScript" src="js/funcoes.js"></SCRIPT>
M

juliano… meu problema não é esse.

Nas páginas chamadas via AJAX não está sendo executado ESTES imports

alguma outra solução?

D

uma idéia seria você colocar tudo de um JS só…

pois eu já tentei fazer isso que você falou e não consegui também…acho que é pq o HTML carrega os scripts em tempo de carregamento da página…

R
julianostr:
Essa é uma das maneiras de carregar arquivos de script:
<SCRIPT language="JavaScript" src="js/funcoes.js"></SCRIPT>
é importante dizer qual o type do script tem alguns browsers que interpretam mais de um tipo de script entao use a type='text/javascript' e se quiser ficar de acordo com a W3C use a tag em script toda em minusculo. vc deve lembrar outra coisa quando vc manipula a página usando AJAX entao o que vai valer são as imports feitas na página mestre.
V

marcelo_mococa acho q ja tive problemas cm isso tb.
Deixa eu ver se é a mesma coisa, apenas confirme para mim.
Vc quer executar um codico JS na pagina que recebe a requesição ajax ?certo !

M

mais ou menos… executar as funções eu consegui.

Recuperei todas as tags script da página e executei o conteúdo das tags (usando eval(xxx) ).

Gostaria mesmo é de importar os js na página.
Alguém sabe porque acontece isso? O browser não executa nada referente a javascript em páginas carregadas por ajax?

R

Eu tambem estou com o mesmo problema.

Depois que uma pagina é carregada atravez do ajax, os codigos js dentro da pagina não executão.

Alguem pode me ajudar, estou realmente precisando solucionar este problema.

A

Fala Marcelo, fiz o fj-21 com vc na caelum ano passado. Cara eu tive o mesmo problema e realmente não consegui dar esses imports não. A solução foi a que vc nao queria :slight_smile: jogar tudo na pagina que é carregada. Se vc descobrir como avisa aê.

Alberto

A

Galera,

Alguem tem alguma solução para esse problema. Ja tentei usar umas soluções como criar a tag script via javascript e adicionar a pagina dinamicamente, mas mesmo assim nao consegui carrega-lo.

Alberto

P

a treta eh a seguinte…os imports são efetuados quando a pagina eh montada pela primeira vez…

deve ter alguma coisa errada nas suas chamadas AJAX, e a forma como o retorno esta sendo montado…se eu nao me engano, dentro do DIV q foi atualizado na chamada AJAX, vc nao vai conseguir executar funções contidas nos .js declarados no inicio da pagina…

eu tive um problema parecido, mo zica…se a função q vc esta tentando executar for isolada(não depender de nenhuma outra), tente coloca-la direto na pagina, soh pra teste…

flw

D

Pessoal, desenvolvi uma função Javascript chamada “doScript”. Com ela, após exibir o conteúdo carregado por AJAX (em uma div por exemplo), é só chamar essa função passando o mesmo conteúdo.

Exemplo:

document.getElementById(minhaDiv).innerHTML = ajax.responseText;

doScript(ajax.responseText);

Veja um exemplo funcionando: http://www.acheimeuauto.com/estudos/doScript/

Se quiser, deixei disponível para download os arquivos do exemplo acima: http://www.acheimeuauto.com/estudos/doScript/esemplo_doScript.zip

Se não conseguir, é só falar…

Espero que ajude!

D

Ps. Esqueci… :?

Segue o conteúdo da função:

function doScript(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 &lt; ini && pos_src &gt;=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("&gt;","");
        // Adiciona o arquivo de script ao objeto que sera adicionado ao documento
        objScript.src = codigo;
    }else{//Se nao encontrou um "src" dentro da tag script, esta e um bloco de codigo script
        // Procura o final do script
        fim = texto.indexOf('&lt;/script&gt;', 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;
}

}>

Criado 20 de novembro de 2006
Ultima resposta 2 de set. de 2008
Respostas 12
Participantes 9