JSON.parse hatası
Merhaba hocam ben login.php sayfası yapmaya çalışıyorum fakat sizin youtube'da
gösterdiğiniz kadar kapsamlı değil sadece user , password ve giriş var
ben bunu jquery ve ajax la yapmaya çalıştım ama JSON.parse kısmında hata alıyorum
(veri=JSON.parse(data); kısmını silsem swal'ıda default olarak yazsam sweetalert çalışıyor)
kodlar şöyle;
<form id="forms" method="POST">
<h1>Kullanıcı Girişi</h1>
<div>
<input type="text" class="form-control" id="kullanici_mail" placeholder="Kullanıcı Mail" />
</div>
<div>
<input type="password" class="form-control" id="kullanici_password" placeholder="Şifre" />
</div>
<input type="hidden" name="login">
<button style="width: 330px;" type="submit" class="btn btn-success"> Giriş Yap </button>
</div>
</form>
<script type="text/javascript">
$(document).ready(function(){
$("#forms").submit(function(){
var formID=$(this).attr('id');
var formDetails=$('#'+formID);
$.ajax({
type:"POST",
url:'../adminn/islem.php',
data:formDetails.serialize(),
success: function(data) {
//Hata aldığım yer
veri=JSON.parse(data);
//Hata aldığım yer
swal("Giriş Başarılı",veri.message,veri.status);
}
});
return false;
});
});
</script>
<?php
/* JQUERY AJAX LOGİN İŞLEMLERİ */
if (isset($_POST['login'])) {
if (empty($_POST['kullanici_mail']) or isset($_POST['kullanici_password'])) {
$data['status']="error";
$data['message']="Mail ya da şifre boş olamaz";
echo json_encode($data);
}else {
$data['status']="success";
$data['message']="Test işlemleri başarılı";
echo json_encode($data);
}
}
?>
CONSOLE HATASI:
Uncaught SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at Object.success (login.php:120)
at i (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at z (jquery.min.js:4)
at XMLHttpRequest.<anonymous> (jquery.min.js:4)
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
<script type="text/javascript">
$(document).ready(function(){
$("#forms").submit(function(){
var formID=$(this).attr('id');
var formDetails=$('#'+formID);
$.ajax({
type:"POST",
url:'../adminn/islem.php',
data:formDetails.serialize(),
success: function(data) {
//Hata aldığım yer
veri=data;
console.log(data);
swal("Giriş Başarılı",veri.message,veri.status);
}
});
return false;
});
});
</script>
Merhabalar,
Ajax üzerinden alacağınız verinizi JSON olarak belirlemek isterseniz dataType:"JSON"
parametresini ajax objenizde belirtebilirsiniz.
Böylece success:function(answer)
kısmında alacağınız answer
değeri direk size json olarak gelecektir. Herhangi bir parse işlemi yapmanız gerekmez.
<script type="text/javascript">
$(document).ready(function(){
$("#forms").submit(function(){
var formID=$(this).attr('id');
var formDetails=$('#'+formID);
$.ajax({
type:"POST",
url:'../adminn/islem.php',
data:formDetails.serialize(),
dataType:"JSON", //Burada eklediğim gibi
success: function(data) {
swal("Giriş Başarılı",veri.message,veri.status);
}
});
return false;
});
});
</script>
Belki daha farklı bir yöntem vardır, uzun süredir kullanmıyorum fakat kullandığım zamanlarda hep bu yöntemi kullandım.
Kolay gelsin