Ir para conteúdo

POWERED BY:

Arquivado

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

Luciano Paker

Redirecionamento Jquery e Janela Modal

Recommended Posts

Preciso de ajuda com o Jquery.

 

Estou usando Janela Modal em meu sistema (em bootstrap), e estou com um problema de redirecionamento de paginas após os cadastros.

 

Vou explicar.

 

A index.php carrega em seu corpo a pagina list.php que traz a listagem de CONTAS cadastradas, quando eu seleciono alguma conta, ele carrega através do evento click que traz a pagina edit_proced.php (que é a listagem de PROCEDIMENTOS da conta que eu selecionei) para o corpo da index.php.

 

Quando eu adiciono/Edito/Excluo algum procedimento ele abre uma modal, e quando eu submeto o formulário sou redirecionado para a Index.php com o corpo da pagina com o list.php, ai que esta o problema eu quero que quando eu editar, adicionar ou excluir algum procedimento, que ele redirecione para a listagem de procedimentos.

 

SEGUE O LINK para ver o sistema e o problema que quero resolver

http://www.lucianopaker.com.br/sis_hosp/fat/index.php?idpessoa=47037

 

Segue abaixo o javascript.

<script type="text/javascript">
    $(function(){
 
        $("#list").addClass('loader');
        $("#list").load('list.php?idpessoa=<? echo $_GET[idpessoa]; ?>', function(){
            $("#list").removeClass('loader');
        });
 
        $(document).on('click', '.list-proc', function(e){
            e.preventDefault();
 
            $("#list").addClass('loader');
            $("#list").load('list_proc.php?idconta='+$(this).attr('data-id'), function(){
                $("#list").removeClass('loader');
            });
 
        });

    });
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites
Substitua o código:
$(document).on('click', '.list-proc', function(e){
    e.preventDefault();

    $("#list").addClass('loader');
    $("#list").load('list_proc.php?idconta='+$(this).attr('data-id'), function(){
        $("#list").removeClass('loader');
    });
});
Por esse:
$(document).on('click', '.list-proc', function(e){
    e.preventDefault();

    $("#list").addClass('loader');
    $("#list").load('list_proc.php?idconta='+$(this).attr('data-id'), function(){
        $("#list").removeClass('loader');
    });

    window.location.href = "URL PARA REDIRECIONAR";

    return false;
});

 

Não esqueça de alterar o "URL PARA REDIRECIONAR"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caio, o evento click esta ok.

 

Quero é que quando eu estiver em "PROCEDIMENTOS DA CONTA" e editar ou cadastrar algum procedimento, qUE a janela modal feche e volte para a pagina de "PROCEDIMENTOS DA CONTA" (atual, para que eu posso incluir / alterar outros procedimentos) e não para a "CONTAS DO PACIENTE".

 

Abra o link http://www.lucianopaker.com.br/sis_hosp/fat/index.php?idpessoa=47037 e veja as telas abaixo:

 

passo1.png

 

passo2.png

 

passo3.png

 

passo4.png

 

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for o que eu entedi, percebi que ao inserir um novo procedimento a página está sendo atualizada com POST, então você tem duas opções:

 

Opção 1

Mudar a URL (sem atualizar) ao clicar no botão "Gerar Procedimentos", onde essa URL é a que abre a página direta de "Procedimentos da Conta", usando esse método:

window.history.replaceState('Object', 'Site Title', "NOVO URL AQUI");

 

Opção 2

Fazer a inserção (POST) via ajax, e não atualizando a página. Exemplo:

$(document).ready(function(){
    $("#IDdoBOTAO").submit(function(){
        var dados = $(this).serialize();
        $.ajax({
            type: "POST",
            url: "URL QUE RECEBE OS DADOS POST",
            data: dados,
            success: function(data) {
                /// EXECUTA ALGUMA ACAO
            }
        });
    });
});

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caio, nesta segunda opção tem como eu colocar a própria index.php pra receber os dados e não dar reload?

E como eu receberia esses dados no php para passar para minha função de inserção?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

A página que recebe o POST seria uma página php comum, com os métodos comum do php. O que a variante $.ajax faria é apenas "abrir essa página em escondido, em background". Nessa página precisa ter o tratamento das varíaveis $_POST e a inserção ao banco.

 

Então para mudar para index.php você precisaria alterar o

url: "URL QUE RECEBE OS DADOS POST",

Para


url: "index.php",

 

Então use o código (atualizado)


$(document).ready(function(){ 
    $("#IDdoBOTAO").submit(function(){ 
        var dados = $(this).serialize(); 
        $.ajax({ 
            type: "POST", 
            url: "index.php", 
            data: dados, 
            success: function(data) { 
                /// EXECUTA ALGUMA ACAO 
            } 
        });
        return false; 
    }); 
});

Se a sua estrutura estiver correta, a página não atualizará. O modo mais fácil para continuar, é adicionando o <form> ao id que usamos aqui:


$("#IDdoBOTAO").submit(function(){

Exemplo:

<form id="IDdoBOTAO" method="post" action="index.php">
    <input type="hidden" name="valor" value="ALGUM DADO QUE PRECISA SER ENVIADO" />
    <input type="submit" value="Salvar Procedimento" />
</form>

 

 

CÓDIGO FINAL

<script type="text/javascript">
$(document).ready(function(){ 
    $("#IDdoBOTAO").submit(function(){ 
        var dados = $(this).serialize(); 
        $.ajax({ 
            type: "POST", 
            url: "index.php", 
            data: dados, 
            success: function(data) { 
                /// EXECUTA ALGUMA ACAO 
            } 
        }); 
        return false;
    }); 
});
</script>

<form id="IDdoBOTAO" method="post" action="index.php">
    <input type="hidden" name="valor" value="ALGUM DADO QUE PRECISA SER ENVIADO" />
    <input type="submit" value="Salvar Procedimento" />
</form>

 

Se não conseguir, deixa um post aqui com o resultado que teve e o que faltou.

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.