v2.5.2
Giriş yap

JSON.parse hatası

erdem
4,664 defa görüntülendi

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) 

Cevap yaz
Cevaplar (3)
haciyeff
1846 gün önce

<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>
haciyeff
1846 gün önce

Buradaki hata senin ajaxda veriyi json.parse etmende zaten. Etmene gerek yok. Php tarafında json_encode ederken veriyi yeterli olacaktır. ajaxdaki success kısmında datanı direk al ve kullan

justatakan
1846 gün önce

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