Ajax ile bilgiler post ediliyor fakat sonuç gösterilmeden sayfa yenileniyor
Herkese merhaba. Sitede çok yeniyim, bu işte de yeni sayılırım. Gerekli kuralları okudum ve elimden geldiğince uymaya çalışacağım. Yine de bir kusurum olursa affola.
Öncelikle kodlarımı paylaşayım:
formun yer aldığı dosya:
<?php require_once 'header.php';?>
<div class="container px-4">
<div class="row">
<div class="col-12">
<h1 class="h4">Hesap Aktivasyonu</h1>
<hr>
<form>
<div class="mb-3">
<input type="text" class="form-control" name="aktivasyonkodu" placeholder="Aktivasyon Kodu" autofocus>
</div>
<div class="mb-3">
<input type="text" class="form-control" name="eposta" placeholder="Kayıtlı E-posta Adresi">
</div>
<button class="btn btn-primary">Doğrula</button> <span id="sonuc" class="h5 text-dark"></span>
</form>
</div>
</div>
</div>
<?php require_once 'footer.php';?>
<script>
$("button").click(function () {
$.ajax({
type: 'POST',
url: '<?php echo $arow->site_url; ?>/sistem/aktivasyon.php',
data: $("form").serialize(),
dataType: "html",
beforeSend: function () {
$('#sonuc').html('<div class="spinner-border" role="status"><span class="visually-hidden">Loading...</span></div>');
},
success: function(cevap) {
$('#sonuc').html(cevap);
},
error: function() {
$('#sonuc').html('Bir hata oldu. Lütfen daha sonra tekrar deneyin.');
}
});
});
</script>
aktivasyon.php dosyası:
<?php
if (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') die("Hatalı istek");
require_once 'ajax-baglan.php';
if($_POST){
$aktivasyonkodu = strip_tags(trim($_POST['aktivasyonkodu']));
$eposta = strip_tags(trim($_POST['eposta']));
if (!$aktivasyonkodu || !$eposta) {
echo "Boş alan bırakmayın.";
}else{
if (!filter_var($eposta, FILTER_VALIDATE_EMAIL)) {
echo "Geçerli bir e-posta adresi girin.";
} else {
$varmi = $db->prepare("SELECT * FROM uye WHERE uye_mail=:mail AND uye_aktivasyon=:aktivasyon");
$varmi->execute([':mail'=>$eposta, ':aktivasyon'=>$aktivasyonkodu]);
$say=$varmi->rowCount();
if ($say==1) {
$aktifet = $db->prepare("UPDATE uye SET uye_durum=:d, uye_aktivasyon=:a WHERE uye_mail=:e AND uye_aktivasyon=:aa");
$aktifet->execute([':d'=>1, ':a'=>NULL, ':e'=>$eposta, ':aa'=>$aktivasyonkodu]);
if ($aktifet) {
echo "Aktivasyon işlemi başarılı, üye girişi yapabilirsiniz.";
}else{
echo "Hata";
}
}else{
echo "Girdiğiniz bilgilerle eşleşen bir kayıt bulunamadı.";
}
}
}
}
?>
Bilgiler başarılı bir şekilde aktivasyon.php dosyasına gönderiliyor, veritabanında da gerekli işlemler başarılı bir şekilde yerine getiriliyor fakat işlem sanki get metodu ile yapılmış gibi geri giden bilgiler adres satırına yazılarak sayfa yenileniyor ve sonuç gösterilmiyor. Umarım sorunumu anlatabilmişimdir. Cevaplayayacak olan herkese şimdiden teşekkürler.
<form onsubmit="false">
</form>
Yukarıdaki gibi dene.