Giriş yapmadınız.

#1 24.12.2018 19:48:32

80sfan
Üye
Kayıtlı: 24.12.2018
Mesajlar: 7

Laravel , ajax post hatası

Merhaba arkadaşlar.
Laravel de formu ajax ile post metoduyla gönderiyorum. Veriler veritabanına ekleniyor ama , arka planda görev yapmak yerine tarayıcıyı yönlendiriyor.

Form :

<form name="bilgigonderform" id="bilgigonderform">
                    @csrf
                    <input type="hidden" id="yazarid" name="yazarid" value="{{Auth::id()}}">
                    <input type="hidden" id="baslikid" name="baslikid" value="{{$gelenbaslik->id}}">
                    <textarea name="bilgi" id="bilgi" placeholder="{{$gelenbaslik->baslik}} hakkında birşeyler yaz..."></textarea>
                    <button id="bilgigonder"  name="bilgigonder">Gönder</button>
                </form>

Rota :

Route::post('/bilgiver' , "[email protected]")->middleware('auth');

Ajax :

 $(function(){
            $("#bilgigonder").click(function(){

                var form_data = $("#bilgigonderform").serialize();

                $.ajaxSetup({
                    headers: {
                        'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
                    }
                });

                $.ajax({

                    url:"/bilgiver",
                    type:"POST",
                    data:form_data,
                    dataType: 'json',
                    success:function(){

                        alert("Başarılı");
                    }
                });
            });
        });

Control :

public function bilgiver(Request $gelen){

          $yazarid = $gelen->Input("yazarid");
          $baslikid = $gelen->Input("baslikid");
          $bilgi = $gelen->Input("bilgi");

          $bilgikaydet=bilgiler::create(array(

              "yazarid"=>$yazarid,
              "baslikid"=>$baslikid,
              "bilgi"=>$bilgi
          ));

          if($bilgikaydet){

              return redirect()->back();
          }
        }

Formu gönderdiğimde oluşan link :

http://localhost:8000/anasayfa/makale?_token=7aRmaMD6wBX7kRpV6DLswP9ohOZm27iz9BbdMp51&yazarid=4&baslikid=9&bilgi=Herkese+selam.&bilgigonder=

Yardımlarınız için şimdiden teşekkürler...

Son düzenleyen 80sfan (24.12.2018 19:49:05)

Çevrimdışı

#2 24.12.2018 21:06:11

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,702
Website

Yanıt: Laravel , ajax post hatası

return redirect()->back();

yaparak yönlendirmeyi siz yapmış oluyorsunuz. Onun yerine json sonuç dönderin:

return response()->json([
    'success' => true
]);
$.ajax({
    url:"/bilgiver",
    type:"POST",
    data:form_data,
    dataType: 'json',
    success:function(res){
        if(res.success) {
            alert("Başarılı");
        }
    }
});

Çevrimdışı

#3 24.12.2018 21:28:39

80sfan
Üye
Kayıtlı: 24.12.2018
Mesajlar: 7

Yanıt: Laravel , ajax post hatası

Formu gönderince ; alert başarılı. Tamam dedikten sonra yine aynı şekilde yönlendiriyor ondan sonra veri görüntüleniyor.

Çevrimdışı

#4 24.12.2018 22:05:50

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,702
Website

Yanıt: Laravel , ajax post hatası

<button type="button" id="bilgigonder"  name="bilgigonder">Gönder</button>

Şeklinde button elementine type="button" ekleyin, belki submit yapıyor olabilir.

Çevrimdışı

#5 25.12.2018 11:36:48

80sfan
Üye
Kayıtlı: 24.12.2018
Mesajlar: 7

Yanıt: Laravel , ajax post hatası

Bu sefer de sayfayı yenilemeden , eklediğim veri gelmiyor. roll Veritabanına veri eklemekte bir sorun yok ama görüntülemede bir sıkıntı var.

Çevrimdışı

#6 25.12.2018 12:35:08

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,490
Website

Yanıt: Laravel , ajax post hatası

Burada geri gelen verinin listelenmesi için yapılmış bir işlem göremedim.

Çevrimdışı

#7 25.12.2018 12:48:37

80sfan
Üye
Kayıtlı: 24.12.2018
Mesajlar: 7

Yanıt: Laravel , ajax post hatası

Sinan bey , bilgileri başka bir fonksiyondan çekiyorum.
Rota :

Route::get('/anasayfa/{baslik}' , "[email protected]")->middleware('auth');

Kontrol :

 public function baslikgit($baslik){

$gelenbaslik=basliklar::where("baslik_slug",$baslik)->first();

$bilgiler = bilgiler::with("bilgiveren")

                ->having("baslikid","=","$gelenbaslik->id")
                ->OrderBy("created_at","asc")
                ->get();

return view("anasayfa",compact("bilgiler"));
        }

Son düzenleyen 80sfan (25.12.2018 12:58:22)

Çevrimdışı

#8 25.12.2018 13:10:23

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,702
Website

Yanıt: Laravel , ajax post hatası

alert("Başarılı");
window.location.reload();

Bu şekilde Başarılı uyarısı gelip kullanıcı Ok düğmesine tıkladıktan sonra sayfayı yenileyebilirsiniz.

Çevrimdışı

#9 25.12.2018 13:21:54

80sfan
Üye
Kayıtlı: 24.12.2018
Mesajlar: 7

Yanıt: Laravel , ajax post hatası

mgsmus yazdı:
alert("Başarılı");
window.location.reload();

Bu şekilde Başarılı uyarısı gelip kullanıcı Ok düğmesine tıkladıktan sonra sayfayı yenileyebilirsiniz.

Yardımlarınız için teşekkürler. Bu şekilde yaparsam ajaxı kullanmamın bir gereği kalmayacak !

Sayfayı yeniden yüklemeden verileri çekmek istiyorum.

Son düzenleyen 80sfan (25.12.2018 13:23:23)

Çevrimdışı

#10 25.12.2018 14:18:56

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,702
Website

Yanıt: Laravel , ajax post hatası

"Sayfayı yeniden yüklemeden verileri çekmek istiyorum." dediğiniz şey bir işlem değil, bir yaklaşım. Bunu komple size burada baştan nasıl gösterebiliriz bilmiyorum.

Elinizde şöyle bir JSON veri olduğunu düşünün:

var data = [{
    "Ali",
    "Mehmet",
    "Murat"
}];

Bu veriyi Javascript ile sayfaya şu şekilde enjekte ediyorsunuz:

<ul>
    <li>Ali</li>
    <li>Mehmet</li>
    <li>Murat</li>
<ul>

Buna DOM Manipulation deniyor.

PHP tarafında sizin baslikgit yöntemi JSON olarak bu veriyi dönderecek. Siz de javascript ile bu veriyi alıp ekrana bu şekilde aktaracaksınız.
Daha sonra AJAX ile işlem yaptığınızda tekrar DOM Manipulation ile kayıtları güncelleyerek yeni eklenen kaydı göstereceksiniz.

Çevrimdışı

#11 25.12.2018 15:00:49

80sfan
Üye
Kayıtlı: 24.12.2018
Mesajlar: 7

Yanıt: Laravel , ajax post hatası

Bu konu hakkında biraz çalışayım. smile

Çevrimdışı

#12 25.12.2018 15:30:50

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,490
Website

Yanıt: Laravel , ajax post hatası

Bu şekilde yapmanın, Mustafa'nın da belirttiği gibi ismine DOM Manipulation deniyor.

Bunu Vuejs, Angular veya Jquery ile yapabilirsiniz. Jquery önermem ama burada Jquery kullandığınız için ondan örnek vereceğim:

var response = "[{
      "rank":"9",
      "content":"Alon",
      "UID":"5"
     },
     {
       "rank":"6",
       "content":"Tala",
       "UID":"6"
    }]";

// convert string to JSON
response = $.parseJSON(response);

$(function() {
    $.each(response, function(i, item) {
        var $tr = $('<tr>').append(
            $('<td>').text(item.rank),
            $('<td>').text(item.content),
            $('<td>').text(item.UID)
        ); //.appendTo('#records_table');
        console.log($tr.wrap('<p>').html());
    });
});

Bu adresten inceleyebilirsiniz: https://stackoverflow.com/questions/177 … ponse-json

Çevrimdışı

#13 25.12.2018 16:59:54

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,702
Website

Yanıt: Laravel , ajax post hatası

Diğer bir yol ise JSON döndürmek yerine komple verilerin gösterildiği HTML yapısını döndürmek. Böylece gelen tüm HTML veriyi sayfada örneğin bir div içerisine enjekte ediyorsunuz, javascript ile birer birer manipüle etmiyorsunuz. Kayıtlarda değişiklik yapınca tekrar enjekte ederek yeni veri ile dolmasını sağlıyorsunuz.

Bu konuda kendiniz araştırma yapıp biraz bilgi sahibi olmanız lazım.

Çevrimdışı

#14 25.12.2018 21:51:58

80sfan
Üye
Kayıtlı: 24.12.2018
Mesajlar: 7

Yanıt: Laravel , ajax post hatası

Yanlış değil eksik bilgi ile yapıyorum o zaman ! Ben javascript çalışayım o zaman. neutral Bilseydim bu dili atlamazdım. Teşekkürler.

Çevrimdışı

#15 26.12.2018 13:00:02

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,490
Website

Yanıt: Laravel , ajax post hatası

Web teknolojileri üzerine yazılım geliştiriyorsanız javascript öğrenmeniz kaçınılmazdır.

Çevrimdışı

Forum alt kısmı