2016-04-10 30 views
1

Ben basit bir form var: javascript/jquery olmadan gönderirken, iyi çalışıyor, veri tabanımda yalnızca bir ekleme var, her şey iyi çalışıyor.Form iki kez (jquery ile ajax) gönderilir

Giriş düğmesinin üzerinde ajax sonucuna sahip olmak için bir jquery yazdım, bir hata varsa kırmızı mesaj, ekleme başarılı bir şekilde tamamlandığında yeşil. Ben de küçük bir gif yükleyici gösteriyorum.

Neden bu jquery kullandığımı anlamıyorum, iki yükleyici aynı anda görünür ve veritabanımda iki ekleme yapılır.

Javascript'i yorumladığımda, iyi çalışıyor, php'nin tamam olduğundan eminim.

$('#addCtg').submit(function() { 
    var action = $(this).attr('action'); 
    var name = $('#name').val() ; 

    $('.messages').slideUp('800', function() { 

     $('#addCtg input[type="submit"]').hide().after('<img src="spin.gif" class="loader">'); 

     $.post(action, { 
      name: name 
     }, function (data) { 
      $('.messages').html(data); 
      $('.messages').slideDown('slow'); 
      $('.loader').fadeOut(); 
      $('#addCtg input[type="submit"]').fadeIn(); 
     }); 
    });  
    return false; 
}); 

çalışmıyor neden ben kullanmak çünkü ben gerçekten anlamıyorum 'return false' durumda

Temel php sadece Gönder düğmesini temel davranışını değiştirmek için:

<?php 

require_once('Category.class.php'); 

    if (isset($_POST['name'])) { 

    $name = $_POST['name'] ; 

    if ($name == "") { 
     echo '<div class="error">You have to find a name for your category !</div>' ; 
     exit(); 
    } else { 
     Category::addCategory($name) ; 
     echo '<div class="succes">Succes :) !</div>' ; 
     exit(); 
    } 
} else { 
    echo '<div class="error">An error has occur: name not set !</div>'; 
    exit(); 
} 

Ve

public static function addCategory($name) { 

    $request = myPDO::getInstance()->prepare(<<<SQL 
      INSERT INTO category (idCtg, name) 
      VALUES (NULL, :name) 
SQL 
      ); 

     $r = $request->execute(array(':name' => $name)); 

     if ($r) { 
      return true ; 
     } else { 
      return false ; 
     } 

} 

nadiren sormak veritabanında eklemek için php benim işlevi, temel malzeme finnaly yardım için, ama bu kez gerçekten sıkışmış, Teşekkür peşin

cevap

1

Sen arıyorsun: $('.messages') - Bahse girerim messages sınıfında 2 elementin var. Sonra ikisi de sunucunuza gönderilecek.

+0

bu deneyin Ve iyi bahis, dostum, dışarıda gözler için teşekkür ederim, bu benim kötü! Makaleler eklemek için gerçekten ve ikinci form var ve tam olarak aynı sınıfı kullanıyordum .... Dış görünümünüz için teşekkür ederiz! –

1

Bunun nedeni, düğmeyi kullandığınız veya ajax isteğini göndermek için göndereceğinizden kaynaklanabilir. ,

$('#addCtg').submit(function (e) { 
    e.preventDefault(); 
    var action = $(this).attr('action'); 
    var name = $('#name').val() ; 

    $('.messages').slideUp('800', function() { 

     $('#addCtg input[type="submit"]').hide().after('<img src="spin.gif" class="loader">'); 

     $.post(action, { 
      name: name 
     }, function (data) { 
      $('.messages').html(data); 
      $('.messages').slideDown('slow'); 
      $('.loader').fadeOut(); 
      $('#addCtg input[type="submit"]').fadeIn(); 
     }); 
    });  
    return false; 
}); 
+0

Bunun hakkında da düşündüm, ama Poul Bak bahisi olarak, aynı sınıf adını (.messages), iki farklı divda, bağlantı içermeyen büyük bir hata yaptım. Yine de teşekkürler :) –

İlgili konular