Ringeril 0 Denunciar post Postado Março 2, 2010 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
lucaswxp 22 Denunciar post Postado Março 2, 2010 Você parece já estar com a lógica pronto. Qual é o problema? Compartilhar este post Link para o post Compartilhar em outros sites
Ringeril 0 Denunciar post Postado Março 3, 2010 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
Ringeril 0 Denunciar post Postado Março 4, 2010 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