Agora há uma página fixa e as demais páginas são chamadas via ajax e inseridas em uma div ('conteúdo')
O que acontece é que a tabela não é mais reordenada pelo TableKit.
Função AJAX que eu utilizo:
// JavaScript Document
function AJAX() {
this.Updater=carregarDados;
function carregarDados (caminhoRetorno,idResposta,metodo,mensagem) {
var conteudo=document.getElementById(idResposta)
conteudo.innerHTML= mensagem;
var xmlhttp = getXmlHttp();
//Abre a url
xmlhttp.open(metodo.toUpperCase(), caminhoRetorno,true);
//Executada quando o navegador obtiver o código
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
//Le o texto
var texto = xmlhttp.responseText;
//Desfaz o urlencode
texto = texto.replace(/\+/g," ");
texto = unescape(texto);
//Exibe o texto no div conteúdo
var conteudo=document.getElementById(idResposta);
conteudo.innerHTML=texto;
// Extrai e executa os javascript dentro das páginas carregadas
extraiScript(texto);
}
}
xmlhttp.send(null);
}
}
Sei que o AJAX simplesmente traz o texto da requisição e insere (com o INNERHTML) dentro da div e assim, não executaria códigos javascripts vindos dessa página.
Resolvi isso utilizando essa função que achei em um fórum:
function extraiScript(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
//alert(codigo);
objScript.src = codigo;
} else { //Se não 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;
}
}
e chamando essa função no retorno da requisição AJAX, assim:
//Exibe o texto no div conteúdo
var conteudo=document.getElementById(idResposta);
conteudo.innerHTML=texto;
// Extrai e executa os javascript dentro das páginas carregadas
extraiScript(texto);
Acontece que ainda sim o TableKit não reordena a tabela pra mim.
Quando eu coloco um 'alert' dentro de um dos JS carregador pelo tablekit ele executa normalmente, mas o restante do script ele parece ignorar.
Alguém sabe como eu faço pra rodar esse script dentro de uma requisição do ajax?
Pergunta
Guest --Vinicius --
Olá a todos!
Estou precisando de uma ajuda meio urgente pro meu trabalho em relação ao AJAX.
Seguinte:
Estava utilizando o script 'TableKit' (http://www.millstream.com.au/upload/code/tablekit/) sem problemas com páginas em PHP. Normal..
Depois precisei mudar o sistema do meu site.
Agora há uma página fixa e as demais páginas são chamadas via ajax e inseridas em uma div ('conteúdo')
O que acontece é que a tabela não é mais reordenada pelo TableKit.
Função AJAX que eu utilizo:
Sei que o AJAX simplesmente traz o texto da requisição e insere (com o INNERHTML) dentro da div e assim, não executaria códigos javascripts vindos dessa página. Resolvi isso utilizando essa função que achei em um fórum: e chamando essa função no retorno da requisição AJAX, assim:Acontece que ainda sim o TableKit não reordena a tabela pra mim.
Quando eu coloco um 'alert' dentro de um dos JS carregador pelo tablekit ele executa normalmente, mas o restante do script ele parece ignorar.
Alguém sabe como eu faço pra rodar esse script dentro de uma requisição do ajax?
Agradeço qualquer ajuda!
Vinicius Arantes
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.