v2.5.2
Giriş yap

Ajax ile bilgiler post ediliyor fakat sonuç gösterilmeden sayfa yenileniyor

mertaslan
499 defa görüntülendi

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> &nbsp; <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.

Cevap yaz
Cevaplar (4)
kemalgundogdu
1108 gün önce

e.preventDefault();
Dener misin

mertaslan
1108 gün önce

@kemalgundogdu hocam çok sağolun.

<script>
	$("button").click(function (event) {
		event.preventDefault();
		$.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>

Bu şekilde sorun düzeldi. Kodlamada başka bir hata var ise düzeltirseniz çok sevinirim.

mertaslan
1109 gün önce

@siyahkalem maalesef hocam işe yaramadı yine aynı.

siyahkalem
1109 gün önce

<form onsubmit="false">

</form>

Yukarıdaki gibi dene.