Ir para conteúdo

POWERED BY:

Arquivado

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

olafercocam

Passar segundo post

Recommended Posts

Olá, bom dia, necessito de ajuda nessa questão.

 

Vou deixar um exemplo bem simples, mas vem real do que não tenho conseguido efetuar com sucesso.

Até porque para não atrapalhar vocês.

 

Eu tenho duas páginas

 

A div#Um envia o POST e retorna para a div#2 que enviaria um novo POST para a div#3, o que não tenho conseguido é passar o POST da div#2 pois ele retorna da Controle.php

 

Só que imprime os dados, mas não consigo passar novamente.

 

O script tá tranquilo de executar, quem puder dar essa força aí.

 

Index.php

<style>
#um{width:300px; height:200px; border:1px solid black;}
#dois{width:300px; height:300px; border:1px solid red; margin:5px; display:none;}
#tres{width:300px; height:300px; border:1px solid blue; margin:5px; display:none;}
</style>

<h1> Index.php </h1>
<div id="um">
   <h3> Envie o POST</h3>
   <form name="teste" method="post" action="">
     <input type="text" name="email" value=""/>
     <input type="submit" value="Envie o Post"/>
   </form>
</div>

<div id="dois"></div>
<div id="tres"></div>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$('form[name="teste"]').submit(function(){
  var formA = $(this);
  var dados = $(this).serialize() + '&acao=meuteste';
        $.ajax({
        url        : 'controle.php',
        data       : dados,
        type       : 'POST',
        beforeSend : function(){               formA.find('.imgloader').fadeIn('slow');
        },
        success    : function(datas){
            if(datas == 'Erro'){
                $('#dois').html(datas).fadeIn('slow');
            }else{
                $('#dois').html(datas).fadeIn('slow');
            }            
        },
        complete   : function(){
            formA.find('.imgloader').fadeOut("fast");
        }
    });
    return false;     
});

$('form[name="testedois"]').submit(function(){
  var formA = $(this);
  var dados = $(this).serialize() + '&acao=testedois';
        $.ajax({
        url        : 'controle.php',
        data       : dados,
        type       : 'POST',
        beforeSend : function(){//formA.find('.imgloader').fadeIn('slow');},
        success    : function(datas){
            alert(datas);
            $('#tres').html(datas).fadeIn('slow');
            
        },
        complete   : function(){//formA.find('.imgloader').fadeOut("fast");}
    });
    return false;     
});
</script>

 

Controle.php

<?php
$acao = strip_tags(trim(addslashes($_POST['acao'])));
switch ($acao){
    case 'meuteste':
        $email = $_POST['email'];
        $emailCerto = 'meuemail@dominio.com';
        
        if($email != $emailCerto):
            echo 'Erro' ;
        else:
           echo'<h3>Receba o POST para enviar outro</h3>';
           echo '<form method="post" action="" name="testedois">';
              echo '<input type="text" name="senha" value=""/>';    
              echo '<input type="submit" name="" value="ENVIA POST DOIS"/>';                  
           echo '</form>';
        endif;
    break;
    
    case 'testedois':
        $senha = $_POST['senha'];
        echo $senha;
    break;
    
    default:
        echo'ERROR';    
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é simples.

 

Você está tentando adicionar um evento de submit na form testedois quando ela ainda não existe.

 

Essa parte $('form[name=testedois]').submit(function(){ deve ficar DENTRO do success da form teste (recomendo que chame uma função pra não poluir seu código).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço sua ajuda, mas não obtive sucesso, tentei pelo callback, pelo else e fora dele, e nessas formas o script parou de funcionar.

 

/***/

Atualizando POST .... muito obrigado, realmente você me ajudou de uma maneira sensacional.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lol, acabei de ver que o código que você postou está errado (erro de fechamento de paranteses/chaves).

 

Tente assim:

 

$('form[name="teste"]').submit(function () {
    var formA = $(this);
    var dados = $(this).serialize() + '&acao=meuteste';
    $.ajax({
        url: 'controle.php',
        data: dados,
        type: 'POST',
        beforeSend: function () {
            formA.find('.imgloader').fadeIn('slow');
        },
        success: function (datas) {
            if (datas == 'Erro') {
                $('#dois').html(datas).fadeIn('slow');
                criaEventos_formularioDois(); // NOVA CHAMADA
            } else {
                $('#dois').html(datas).fadeIn('slow');
            }
        },
        complete: function () {
            formA.find('.imgloader').fadeOut("fast");
        }
    });
    return false;
});


function criaEventos_formularioDois() {
    $('form[name="testedois"]').submit(function () {
        var formA = $(this);
        var dados = $(this).serialize() + '&acao=testedois';
        $.ajax({
            url: 'controle.php',
            data: dados,
            type: 'POST',
            beforeSend: function () { //formA.find('.imgloader').fadeIn('slow');},
                // você havia esquecido de fechar essa function, porque comentou o } dela na linha acima
            },
            success: function (datas) {
                alert(datas);
                $('#tres').html(datas).fadeIn('slow');
            },
            complete: function () { //formA.find('.imgloader').fadeOut("fast");}
                // você havia esquecido de fechar essa function, porque comentou o } dela na linha acima
            }
        });
        return false;
    });
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele tava fechado, só aqui na postagem que ficou na mesma linha do comentário, mas no script em si tava ok, eu mudei o nome das variáveis e assim obtive sucesso.

 

Mas esse exemplo novo que você deixou também será de grande importância em meu aprendizado.

 

Muito grato pela sua ajuda. Deus te ilumine e te dê cada dia mais conhecimento.

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.