Ir para conteúdo

Arquivado

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

Wagner M.M

Excluir com ajax não funciona

Recommended Posts

Preciso fazer o cadastro e possibilidade de excluir com ajax (afim de não dar refresh na página)

Estou fazendo assim, o primeiro que seria o $('#reg-form_2').submit(function(e){ para cadastrar funciona, mais os $('#reg-form_3').submit(function(e){ não funciona, os dois aparacem na mesma página:

$(document).ready(function() {  

        // submit form using $.ajax() method

        $('#reg-form_2').submit(function(e){

            e.preventDefault(); // Prevent Default Submission

            $.ajax({
                url: 'cadastra_convidado.php',
                type: 'POST',
                data: $(this).serialize() // it will serialize the form data
            })
            .done(function(data){
                $('#form-content_2').fadeOut('slow', function(){
                    $('#form-content_2').fadeIn('slow').html(data);
                });
            })
            .fail(function(){
                alert('Ajax Submit Failed ...');    
            });
        });


    });
    $(document).ready(function() {  

        // submit form using $.ajax() method

        $('#reg-form_3').submit(function(e){

            e.preventDefault(); // Prevent Default Submission

            $.ajax({
                url: 'deletar_convidado.php',
                type: 'POST',
                data: $(this).serialize() // it will serialize the form data
            })
            .done(function(data){
                $('#form-content_2').fadeOut('slow', function(){
                    $('#form-content_2').fadeIn('slow').html(data);
                });
            })
            .fail(function(){
                alert('Ajax Submit Failed ...');    
            });
        });


    });

 

<form method="post" id="reg-form_2" autocomplete="off" style="border:none;">
    <input type="text" name="nome" id="nome" value="" placeholder="Digite o Nome do Convidado"><br>
    <input type="text" name="email" id="email" value="" placeholder="Digite o email do Convidado">
    <button class="btn btn-primary">Adicionar convidado</button>    
    </form>
    <form method="post" id="reg-form_3" autocomplete="off" style="border:none;">           <input type="hidden" name="deletar_convidado" id="deletar_convidado" value="<?php echo $row_convidados['id']; ?>">
    <button class="btn btn-primary" style="margin-bottom:20px;width: 100%;" type="submit">Exlcluir</button> 
    </form>            
<div id="form-content_2"></div>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que as duas funções se repetem, tente simplificar desta maneira:

 

Novo código HTML: (repare que eu criei o atributo "link" no seu <form>, onde você informa o seu arquivo php)

<form url="cadastra.php" method="post" id="reg-form_2" autocomplete="off" style="border:none;">
    <input type="text" name="nome" id="nome" value="" placeholder="Digite o Nome do Convidado"><br>
    <input type="text" name="email" id="email" value="" placeholder="Digite o email do Convidado">
    <button class="btn btn-primary">Adicionar convidado</button>    
</form>

<form url="deletar_convidado.php" method="post" id="reg-form_3" autocomplete="off" style="border:none;">           
    <input type="hidden" name="deletar_convidado" id="deletar_convidado" value="<?php echo $row_convidados['id']; ?>">
    <button class="btn btn-primary" style="margin-bottom:20px;width: 100%;" type="submit">Exlcluir</button> 
</form>            

<div id="form-content_2"></div>

Depois seu script ficará assim: (não precisa repetir o código)

$(document).ready(function() {  

        $('#reg-form_2').add('#reg-form_3').submit(function(e){

            e.preventDefault(); 

            $.ajax({
                url: $(this).attr('url'),
                type: 'POST',
                data: $(this).serialize() 
            })
            .done(function(data){
                $('#form-content_2').fadeOut('slow', function(){
                    $('#form-content_2').fadeIn('slow').html(data);
                });
            })
            .fail(function(){
                alert('Ajax Submit Failed ...');    
            });
        });
  
});

 

Se não funcionar, nos diga o que acontece e o tipo de falha.

Compartilhar este post


Link para o post
Compartilhar em outros sites


 

Agora, Eziquiel disse:

Você está usando o código HTML que te passei?

A função de cadastrar funcionou? Ou ambos retornaram erro?

Ambas retornaram erro

 

Assim tipo a li puxa do bando de dados o Nome e Status do usuario, quando clico nos outros botões além do primeiro do loop, não funciona ele da refresh na página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, escrevi algo errado.

substitua o seu HTML por esse. Veja se ao menos a função de cadastrar vai funcionar...

<form url="cadastra_convidado.php" method="post" id="reg-form_2" autocomplete="off" style="border:none;">
    <input type="text" name="nome" id="nome" value="" placeholder="Digite o Nome do Convidado"><br>
    <input type="text" name="email" id="email" value="" placeholder="Digite o email do Convidado">
    <button class="btn btn-primary">Adicionar convidado</button>    
</form>

<form url="deletar_convidado.php" method="post" id="reg-form_3" autocomplete="off" style="border:none;">           
    <input type="hidden" name="deletar_convidado" id="deletar_convidado" value="<?php echo $row_convidados['id']; ?>">
    <button class="btn btn-primary" style="margin-bottom:20px;width: 100%;" type="submit">Exlcluir</button> 
</form>            

<div id="form-content_2"></div>

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, Eziquiel disse:

Desculpe, escrevi algo errado.

substitua o seu HTML por esse. Veja se ao menos a função de cadastrar vai funcionar...


<form url="cadastra_convidado.php" method="post" id="reg-form_2" autocomplete="off" style="border:none;">
    <input type="text" name="nome" id="nome" value="" placeholder="Digite o Nome do Convidado"><br>
    <input type="text" name="email" id="email" value="" placeholder="Digite o email do Convidado">
    <button class="btn btn-primary">Adicionar convidado</button>    
</form>

<form url="deletar_convidado.php" method="post" id="reg-form_3" autocomplete="off" style="border:none;">           
    <input type="hidden" name="deletar_convidado" id="deletar_convidado" value="<?php echo $row_convidados['id']; ?>">
    <button class="btn btn-primary" style="margin-bottom:20px;width: 100%;" type="submit">Exlcluir</button> 
</form>            

<div id="form-content_2"></div>

O primeiro agora funcionou,

 

Como falei ele se torna um loop com varios botões de exlcluir, quando clico apartir do segundo botão da refresh na pgaina, e quando clico no primeiro retorna isso Ajax Submit Failed ...

Veja na imagem como fica
http://ap.imagensbrasil.org/image/jt7rKu

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK... Tente este script aqui:

 

$(document).ready(function() {  

  $('#reg-form_2').submit(function(e){

            e.preventDefault(); 

            $.ajax({
                url: 'cadastra_convidado.php',
                type: 'POST',
                data: $(this).serialize() 
            })
            .done(function(data){
                $('#form-content_2').fadeOut('slow', function(){
                    $('#form-content_2').fadeIn('slow').html(data);
                });
            })
            .fail(function(){
                alert('Ajax Submit Failed ...');    
            });
        });
  
  
        $(document).on('click', '#reg-form_3', function(e){

            e.preventDefault(); 

            $.ajax({
                url: 'deletar_convidado.php',
                type: 'POST',
                data: $(this).serialize() 
            })
            .done(function(data){
                $('#form-content_2').fadeOut('slow', function(){
                    $('#form-content_2').fadeIn('slow').html(data);
                });
            })
            .fail(function(){
                alert('Ajax Submit Failed ...');    
            });
         });
  
});

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza. De nada.

Só pra você saber qual é o problema... quando você tem elementos que são criados dinamicamente, você precisa chamar a função deles de uma outra maneira, quando utilizando JQuery. Exemplo:

$(document).on('click', '#reg-form_3', function(e){

Esse código acima tem a mesma funcionalidade deste abaixo:

$('#reg-form_3').click(function(e){

Só que este segundo script será atribuído apenas aos elementos #reg-form_3 criados no carregamento da página.

Já o primeiro atribuirá o evento a todos os elementos #reg-form_3 do documento, inclusive os criados dinamicamente. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu faço quando o php fizer um loop tendo vários formulários tipo assim

 

<form url="deletar_convidado.php" method="post" id="reg-form_3<?php echo $i_content ?>" autocomplete="off" style="border:none;  float:left; width:50px">           
  <input type="hidden" name="i_content" id="i_content" value="<?php echo $i_content ?>">
  <input type="hidden" name="auxiliar_evento_usuarioss" id="auxiliar_evento_usuarioss" value="<?php echo $produto["auxiliar_evento_usuario"] ?>">
   <input type="hidden" name="deletar_convidado" id="deletar_convidado" value="<?php echo $row_convidado['id']; ?>">
    <button class="btn btn-info lista_convidado_1" type="submit"><i class="entypo-cancel-circled"></i></button> 
</form>            

<div id="form-content_2<?php $i_content++; echo $i_content; ?>" style="clear:both;"></div>

perceba que ali reg-form_3<?php echo $i_content ?>  e também form-content_2<?php $i_content++; echo $i_content; ?>"criei para que eu possa excluir os arquivos quando estiver em loop.

 

estou fazendo assim, funciona apenas no primeiro registro do Loop php, o restante nao funciona

 

        $(document).on('click', '#reg-form_3'+$("#i_content").val(), function(e){
            e.preventDefault(); 
            $.ajax({
                url: 'deletar_convidado.php',
                type: 'POST',
                data: $(this).serialize() 
            })
            .done(function(data){
               alert($("#i_content").val());
               
                $('#form-content_2'+$("#i_content").val()).fadeOut('slow', function(){
                    $('#form-content_2'+$("#i_content").val()).fadeIn('slow').html(data);
                });
            })
            .fail(function(){
                alert('Ajax Submit Failed deletar convidado...');    
            });
         });


 


       

Compartilhar este post


Link para o post
Compartilhar em outros sites
40 minutos atrás, Eziquiel disse:

Chame a função assim:


$(document).on('submit', '#reg-form_3', function(){

 

Amigo ainda não funcionou, ele dá refresh na pagina quando clico botão excluir e nao exclui o registro

 

$(document).on('submit', '#reg-form_3', function(){
            e.preventDefault(); 
            $.ajax({
                url: 'deletar_convidado.php',
                type: 'POST',
                data: $(this).serialize() 
            })
            .done(function(data){
               alert($("#i_content").val());
               
                $('#form-content_2'+$("#i_content").val()).fadeOut('slow', function(){
                    $('#form-content_2'+$("#i_content").val()).fadeIn('slow').html(data);
                });
            })
            .fail(function(){
                alert('Ajax Submit Failed deletar convidado...');    
            });
         });


 

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 minutos atrás, Eziquiel disse:

Ah sim. Faltou passar um parâmetro:

Use assim:

 


$(document).on('submit', '#reg-form_3', function(e){

 

Eziquiel que coisa cara, ainda não deu certo, fica dando refresh na pagina ainda quando tem mais de uma formulario.

 

No html fica assim o id dos forms

#reg-form_31 
#reg-form_32
#reg-form_33
#reg-form_34

 

Equando tem um formulario só retorna Undefined

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim. Não havia reparada esse incremento no id.

Vamos fazer por classe então.

 

Ao criar seu <form> via php, inclui uma classe nele. Pode ser assim:

<form class="reg-formulario" url="deletar_convidado.php" method="post" id="reg-form_3<?php echo $i_content ?>" autocomplete="off" style="border:none;  float:left; width:50px">

Agora sua função será implementada assim:

 

$(document).on('submit', '.reg-formulario', function(e){

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, Eziquiel disse:

Ah sim. Não havia reparada esse incremento no id.

Vamos fazer por classe então.

 

Ao criar seu <form> via php, inclui uma classe nele. Pode ser assim:


<form class="reg-formulario" url="deletar_convidado.php" method="post" id="reg-form_3<?php echo $i_content ?>" autocomplete="off" style="border:none;  float:left; width:50px">

Agora sua função será implementada assim:

 


$(document).on('submit', '.reg-formulario', function(e){

 

 

fechou amigo muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por ILR master
      Salve galera.
       
      Vou publicar um evento e quero colocar um Cronômetro regressivo que mostre em tempo real os dias, horas e minutos que faltam para determinada data, tipo:.
      Faltam 5 dias, 12:30:00 para inauguração.
       
      Qdo chegar no dia, quero que apenas apareça uma mensagem.
       
      Alguém pode me ajudar?
    • Por gersonab
      bom dia
      tenho uma aplicação onde gero um arquivo em pdf, gostaria de recuperar a url do pdf q foi criado, pois quando este é criado ele abre automaticamente e ou ja faz o download do mesmo, preciso da url para enviar para outros.
      <button type="button" class="btn btn-outline-primary" onclick="createPDF();">Imprimir</button> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.4.1/jspdf.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/canvas2image@1.0.5/canvas2image.min.js"></script> <script language="javascript"> (function($){ $.fn.createPdf = function(parametros) { var config = { 'fileName':'html-to-pdf' }; if (parametros){ $.extend(config, parametros); } var orig = $(this); var widthOrig = $(orig).width(); $(orig).width(900); var quotes = document.getElementById($(orig).attr('id')); html2canvas(quotes, { onrendered: function(canvas) { var pdf = new jsPDF('p', 'pt', 'letter'); for (var i = 0; i <= quotes.clientHeight/900; i++) { var srcImg = canvas; var sX = 0; var sY = 900*i; var sWidth = 900; var sHeight = 900; var dX = 0; var dY = 0; var dWidth = 900; var dHeight = 900; window.onePageCanvas = document.createElement("canvas"); onePageCanvas.setAttribute('width', 900); onePageCanvas.setAttribute('height', 900); var ctx = onePageCanvas.getContext('2d'); ctx.drawImage(srcImg,sX,sY,sWidth,sHeight,dX,dY,dWidth,dHeight); var canvasDataURL = onePageCanvas.toDataURL("image/png", 1.0); var width = onePageCanvas.width; var height = onePageCanvas.clientHeight; if (i > 0) { pdf.addPage(612, 791); } pdf.setPage(i+1); pdf.addImage(canvasDataURL, 'PNG', 20, 40, (width*.62), (height*.62)); // Retirar o comentário caso queira ver como está sendo gerado o canvas. //document.body.appendChild(onePageCanvas); } pdf.save(config.fileName); $(orig).width(widthOrig); } }); }; })(jQuery); function createPDF() { $('#renderPDF').createPdf({ 'fileName' : '<?php echo $usercli['idocl']; ?>' }); }  
    • Por gersonab
      Boa tarde a todos.
      tenho pesquisado e ainda não encontrei uma forma de montar uma imagem online, tipo, tenho uma área de 400px por 400px , nesta gostaria de acrescentar algumas imagens que já tenho, tipo clicar e arrastar para dentro, sendo que estas imagens já se encontram online no site, seria mais ou menos assim : poderia colocar dentro desta área uma imagem do gato , do cachorro e ou outra. Não sei qual biblioteca ou forma de fazer.
      gostaria da ajuda para iniciar, desde já agradeço.
    • Por Danilo - Jesus voltará!
      Olá pessoal, tenho uma div a qual através de um select categorias eu trago dados de empresas do banco, aí preciso clicar nas listagens das empresas e pegar o ID quando clica no checkbox e gravar pelo ajax novamente na session feita no arquivo php tipo um carrinho de compras, que essa parte já tenho... só não to conseguindo pegar os ids gerados dinamicamente no retorno feito do ajax, eles aparecem com F12 ao inspecionar, mas não aceita eu clicar para pegar o ID, acho que é algo de DOM, mas não to sabendo fazer... alguém aí saberia me ajudar como pegar esses ids ao clicar, já que eles vem dinamicamente?
       
      obrigado
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.