Ir para conteúdo

POWERED BY:

Arquivado

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

Ringeril

[Resolvido] Atualizar página no retorno do AJAX

Recommended Posts

Olá,

 

Tenho um link que chama uma página com AJAX:

<button onclick="abre('pagina.php?id=1','div-abre','div-load');"></button>
<button onclick="abre('pagina.php?id=2','div-abre','div-load');"></button>
E assim por diante. Até aqui tudo funciona.

Mas como ele passa um ID por GET quero validar esse id, caso exista mostre a pagina, caso não exista mude para outra pagina.

Exemplo:

...
$i=1;
if($id != $i){
    echo "<script>abre('pagina.php?id=2','div-abre','div-load');</script>";
}else{
...
Ai ele mostra a página normalmente, mas quando o ID é diferente o script para de funcionar.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples: não funciona.

 

Exemplo:

...
$i=1;
if($id != $i){
    echo "<script>abre('pagina.php?id=2','div-abre','div-load');</script>";
}else{
...
Esse script é o retorno do AJAX.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, depois de muita procura:

O AJAX só retorna texto, ele não sabe a diferença entre o texto e o JS. Se tiver um "<script></script>" ele vai retornar o TEXTO, não vai executar o SCRIPT.

Por isso, encontrei esse função que pega o retorno do AJAX e executa o que tiver entre "<script></script>".

function execScript(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 < ini && pos_src >=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(">","");
            // 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('</script>', 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 <script
        ini = texto.indexOf('<script', fim);

        //Limpa o objeto de script
        objScript = null;
    }
}
Para usá-la, coloque depois que receber a resposta do AJAX:

Exemplo:

document.getElementById("div").innerHTML=ajax.responseText;
execScript(ajax.responseText);

Abraço e obrigado.

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.