Jump to content
Sign in to follow this  
Randiclecio Cunha

Meu jQuery Form submete o form varias vezes

Recommended Posts

Olá, peço ajuda a galera do fórum, estou meio perdido,

meu formulário abaixo tem o seguinte erro, quando submeto a primeira vez ele retorna correto,

porem quando clico uma segunda vez ele ele me retorna duas vezes o alert e assim sucessivamente, terceiro click ele retorna 3 vezes etc

 

HTML - index.php

 

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>jQuery Form Com Erro</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="descrição" content="texto descritivo da pegina">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.">
<style>
.debug{
display: block;
min-height: 30px;
padding: 10px;
border: solid 1px #000;
margin: 5px 0;
}
#form input{
display: block;
margin: 5px 0;
}
</style>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>
<script type="text/javascript">
$(function(){
$(".enviar").click(function(){
var nome = $(this).attr("class");
var form = $("#"+nome);
var dados = form.serialize();
var acao = "php/"+nome+".php";

form.submit(function(){
$(this).ajaxSubmit({
url: acao,
success: function(sucesso){
//$(".debug").empty().html(sucesso);
alert(sucesso)
}
});
return false;
});

});
});
</script>
</head>
<body>
<div class="debug"></div>
<form name="" id="enviar" action="" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="text" name="nome" value="">
<input type="tel" name="pass" value="">
<input type="submit" class="enviar" value="enviar">
</form>
</body>
</html>

 

 

PHP - enviar.php

 

<?php
print_r($_POST);
print_r($_FILES);
?>

Share this post


Link to post
Share on other sites

O que se passa é que ao aninhares eventos estás a enviar o formulário várias vezes. Experimenta assim:

form.submit(function(e) {
  e.preventDefault();
  $(this).ajaxSubmit({
    url: acao,
    success: function(sucesso) {
      //$(".debug").empty().html(sucesso);
      alert(sucesso)
    }
  });
  return false;
});
  • +1 1

Share this post


Link to post
Share on other sites

Olá encerrar o tópico pois já resolvi o problema

 

antes[

$(".enviar").click(function(){
var nome = $(this).attr("class");

]depois[

$("body").on("submit",function(){
var nome = $(this).attr("class");

]

 

em vez de chamar o form com o evento click

chamo direto pelo submit assim ele chama apenas uma vez, por vez valeu.

Share this post


Link to post
Share on other sites

 

O que se passa é que ao aninhares eventos estás a enviar o formulário várias vezes. Experimenta assim:

form.submit(function(e) {
  e.preventDefault();
  $(this).ajaxSubmit({
    url: acao,
    success: function(sucesso) {
      //$(".debug").empty().html(sucesso);
      alert(sucesso)
    }
  });
  return false;
});

valeu o fato era que o evento click estava no já submit do form que chamava o mesmo form dai ia se multiplicando com quantos clicks eu submetesse, consegui resolver removendo a obrigação do botão submit de chamar o form e passei direto ao DOM monitorando o evento submit de qualquer form o fato e que ele sempre chama o form em que cliquei independente de ter mais forms dentro do documento ficou muito bom valeu

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By elderjesse
      Boa tarde galera, estou com um problema no sistema de login , pois quando eu clico em logar ele me joga para pagina inicial do site em vez de validar o usuário consultando no banco de dados e logar.
       
      Se poderem me ajudar eu agradeço :)
       
      Minha pagina de verificação
       
      <?php
      $login = new Login;
      if($login->isLogado()){
          header("Location: ".PATH."/finalizar");
      }else{
          if(isset($_POST['acao']) && $_POST['acao'] == 'Logar'):
              $email = strip_tags(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING));
              $senha = strip_tags(filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_STRING));
              if($email == '' || $senha == ''){
                  echo '<script>alert("Por Favor, Preencha o Formulário!");location.href="'.PATH.'/verificar"</script>';
              }else{
                  $login->setEmail($email);
                  $login->setSenha($senha);
                  if($login->logar()){
                      header("Location: ".PATH."/finalizar");
                  }else{
                      echo '<script>alert("Desculpe, mais o usuário não foi encontrado");location.href="'.PATH.'/verificar"</script>';
                  }
              }
          endif;
      }
      ?>
      <div id="verification">
          
           <div class="logar">
              <span class="spn-title">Já possui cadastrado? Faça Login!</span>
                  <form action="" method="post" enctype="multipart/form-data">
                      <input type="submit" value="Logar" />
                      <label>
                          <span>E-mail:</span>
                          <input type="text" name="email" />
                      </label>
                      <label>
                          <span>Senha:</span>
                          <input type="password" name="senha" />
                      </label>
                      <input type="hidden" name="acao" value="logar" />
                      <a href="#">Esqueceu sua senha? Clique aqui</a>
              </form>
          </div>
          
          <div class="text">
              <span>Ainda Não é Cadastrado?</span>
              <p><br>Se você não é cadastrado em nossa loja, por favor, cadastre-se para prosseguir com o processo de compra do seu produto.</p>
              <p><br><a href="#">Clique Aqui para Cadastrar-se</a></p>
          </div><!---text--->
          
      </div><!---verification--->
       
       
      meu sistema de login.php
       
      <?php class Login extends BD{
          private $prefixo = 'media_';
          private $tabela = 'loja_clientes';
          private $email;
          private    $senha;
          
          public function setEmail($mail){
              $this->email = $mail;
          }
          
          private function getEmail(){
              return $this->email;
          }
          
          public function setSenha($pass){
              $this->senha = $pass;
          }
          
          private function getSenha(){
              return $this->senha;
          }
          
          private function validar(){
              $strSQL = "SELECT * FROM `".$this->tabela."` WHERE email_log = ? AND senha_log = ?";
              $stnt = self::conn()->prepare($strSQL);    
              $stnt->execute(array($this->getEmail(), $this->getSenha()));
              return ($stnt->rowCount() > 0) ? true: false;
          }
          
          public function logar(){
              if($this->validar()){
                  $atualizar = self::conn()->prepare("UPDATE `".$this->tabela."` SET data_log = NOW() WHERE email_log = ? AND senha_log = ?");
                  $atualizar->execute(array($this->getEmail(), $this->getSenha()));
                  
                  $_SESSION[$this->prefixo.'emailLog'] = $this->getEmail();
                  $_SESSION[$this->prefixo.'senhaLog'] = $this->getSenha();
                  return true;
              }else{
                  return false;
              }
          }
          
          public function isLogado(){
              if(isset($_SESSION[$this->prefixo.'emailLog'], $_SESSION[$this->prefixo.'senhaLog'])){
                  return true;
              }else{
                  return false;
              }
          }
          
          public function deslogar(){
              if($this->isLogado()){
                  unset($_SESSION[$this->prefixo.'emailLog']);
                  unset($_SESSION[$this->prefixo.'emailLog']);
                  return true;
              }else{
                  return false;
              }
          }
      }
      ?>
       
       
       
    • By lucas70770
      Ola, estou com um problema que tem me dado muita dor de cabeça. Tenho um uma tabela que é gerada do banco de dados, e eu coloquei um botão para excluir os itens selecionados, e quando clico nele ele aparece a lista de dados que quero excluir. E isso é feito da seguinte forma: eu fiz uma pagina chama consulta.php e é enviado com o Jquery Form q antes de mandar os dados ele altere o valor para "0" uma caixa de texto especifica no formulario(essa caixa esta invisivel), e quando chega no php ele tem uma estrutura condicional para q o 0 só fasa a consulta, e quando clicar no botão submit embaixo da lista ele envie o formulário novamente mais o valor da caixa de texto se é alterado para o valor "1", que faz a exclusão dos dados. O problema é q não funciona.
       
      Quero saber como enviar o mesmo formulario sem refresh e varis vezes de forma dinâmica. Agradeço a atenção!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.