Ajax ve php kullanırken bir hata yapıyorum
Merhaba arkadaşlar, php ve ajax ile örnekler yapıyorum. Ajax'a daha yeni başladım. Kodlarım çalışmıyor, nerede hata yaptığımı yazabilir misiniz?
php kodlarım
<?php
if($_GET){
extract($_GET);
echo"Adınız: $ad";
}
?>```
## html & javaScript
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Deneme</title>
<script src="jquery.js"></script>
<script src="javaScriptFunctions.js"></script>
</head>
<body>
<h1>Adınızı Girin</h1>
<form id="form" name="form">
<input name="ad" placeholder="Adınız"><br>
<input type="button" id="gonder" name="gonder">
</form>
<script>
document.getElementById('gonder').onclick=function(){
var form = $("#form").serialize();
$.ajax({
url:"denemeler.php",
type:"GET",
data:form
});
</script>
</body>
</html>`
Yardımcı olursanız çok sevinirim.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (12)
Merhaba arkadaşlar, aslında ajax en başından beri bizim verilerimizi gönderiyormuş fakat php bu isteği sonradan algılamıyorumuş. Sayfadan gelen yanıtı success ile kontrol ettiğimde bilgiler başarıyla kaydedildi ifadesini gördüm. Php, sayfa ilk açıldığında kontrol ettiği için sonraki girişlerde görmüyormuş maalesef.
Ayrıca ben javaScript'e çok yeni başlayan biri değilim. Artık ajax gibi şeyleri kullanacak kadar ilerlediğimi düşünüyorum.
Merhaba arkadaşlar. Neden söylediğimi anlamak istemiyorsunuz? Özellikle @mami'ye söylüyorum çünkü ben aynı kodlarla farklı bir url'den farklı bir form da gönderdim, yani sizlerin dediklerini de yaptım. Fakat nedense hala bana dosyaların farklı olması gerektiğini söylüyorsunuz. Bu arada yardımlarınız için teşekkürler.
@mami 'nin de söylediği gibi ajax ı farklı bir dosyada yaparsan sorun çözülecektir.
ajax.php dosyasına aşağıdakileri eklersen.
<?php
if($_POST){
extract($_POST);
if(empty($ad)||empty($eposta)){
echo'<div role="alert">Lütfen hiçbir alanı boş bırakmayın!</div>';
}
else
{
echo'<div role="alert">Bilgiler başarıyla kaydedildi</div>';
}
}
if(!isset($_POST)){
echo'Henüz veri Gönderilmedi';
}
?>
geriye dönen değer başarılıysa success
ten alabilirsin.
success: function(basarili) {
alert(basarili);
}
@makifgokce Ben aynı sayfadan aynı sayfaya bilgi alışverişi yapacağım için url yazmadım, normalde biliyorum. Fakat yazınca da değişmedi zaten, daha önce başka bir php dosyası oluşturup denemiştim url ile göndertmeyi ama onda da olmamıştı. Ya bu nasıl bir hata? Her yerde sordum fakat bir türlü çözemedik maalesef!
url'yi unutmuşum.
post işlemini yakaladığın yerin urlsini gir.
Örnek:
$("#gonder").click(function(gonder) {
var denemeFormu = $("#denemeFormu").serialize();
$.ajax({
url: "ajax.php",
type: "POST",
data: denemeFormu,
error: function(error) {
alert("Bilgiler gönderilirken bir hata oluştu: " + error);
},
success: function(basarili) {
alert("Bilgiler başarıyla gönderildi");
}
});
});
Bu arada ben type kısmını GET olarak da değiştirdim fakat get ile de göndermedi. Yani ajax'da bir sıkıntı var.
@makifgokce Senin kodunu işi sağlama almak için kopyaladım. Bana bilgiler başarıyla gönderildi diyor fakat maalesef php bunu hala algılamıyor. Ben tüm dosyanın kodunu paylaşıyorum. Kaç gündür durumun içinden çıkamadım, yardımcı olursanız sevinirim. Kod:
<?php
if($_POST){
extract($_POST);
if(empty($ad)||empty($eposta)){
echo'<div role="alert">Lütfen hiçbir alanı boş bırakmayın!</div>';
}
else
{
echo'<div role="alert">Bilgiler başarıyla kaydedildi</div>';
}
}
if(!$_POST){
echo'Henüz veri Gönderilmedi';
}
?>
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Denemeler</title>
<script src="jquery-3.6.0.js"></script>
<script src="javaScriptFunctions.js"></script>
</head>
<body>
<form id="denemeFormu" name="denemeFormu">
<label>Adınız: <input name="ad" id="ad" placeholder="Adınızı girin"></label><br>
<label>e-posta: <input type="email" placeholder="e-posta adresiniz" name="eposta" id="eposta"></label><br>
<button type="button" id="gonder" name="gonder">Tamam</button>
</form>
<script>
$("#gonder").click(function(gonder) {
var denemeFormu = $("#denemeFormu").serialize();
$.ajax({
type: "POST",
data: denemeFormu,
error: function(error) {
alert("Bilgiler gönderilirken bir hata oluştu: " + error);
},
success: function(basarili) {
alert("Bilgiler başarıyla gönderildi");
}
});
});
</script>
</body>
</html>
Sevgiler
@ozermert26 verdiğin linkteki kodu inceledim <script>
tagları içerisindeki success
'in karşısındaki süslü parantezlerin sonunda noktalı virgül ;
vardı.Aşağıdaki gibi yaparsan çalışacaktır.
$("#gonder").click(function(gonder) {
var denemeFormu = $("#denemeFormu").serialize();
$.ajax({
type: "POST",
data: denemeFormu,
error: function(error) {
alert("Bilgiler gönderilirken bir hata oluştu: " + error);
},
success: function(basarili) {
alert("Bilgiler başarıyla gönderildi");
}
});
});
@mami Merhaba, öncelikle bu faydalı bilgiler için çok teşekkür ederim. JQuery'nin
$("#id").click(function(){
// kodlar
gibi işlevlerini yukarıda gösterdiğim şekilde yaptığım halde de çalışmamıştı. Neden çalışmadığını bir türlü çözemedim. Bir de ben javaScript'e yeni başladım demedim ki, tamam, başlayalı çok uzun zaman olmadı ama artık ajax'a başlamam gerektiğini düşündüm. Teşekkürler. Bu arada, Şu linkten yaptığım yeni ajax çalışmasının kaynak kodlarını görebilir ve eğer bir hata keşfederseniz ve yazarsanız sevinirim çünkü hala çalışmıyor.
hocam javascript öğrenmeden yapmak zor olur. öğrenmeden yapmayın.
koda gelirsek, jqueryide
$('#id').click(function(){
//işlemler
})veya
$('#id').on('click',function(){
//işlemler
})
şeklinde olur.
ajax ise toplam 4 tane sabit parametre alır.
bunlar:
url, data, type, success'dır.
kullanımı:
$.ajax({
url: 'ajax.php',
type: 'post',
data: data,
success: function(response){
//işlemler
}
})
şeklindedir.
size önerim, yazdıklarımı okuyup anladıktan sonra javascript dersine başlamanız.
öğrenmeden deneyimleyerek yapmak size zaman kaybettirir.
iyi günler!