Burak KADILAR | Yazılım Uzmanı

Burak KADILAR | Yazılım Uzmanı

Backend Developer | Bursa Yazılım Uzmanı

JQuery dinamik modal açma – Popup

Aynı sayfada birden çok modal eklemek kod fazlalığına yol açar. Bunun yerine JQuery & AJAX append ve data attribute’ini kullanarak bir modal ekleyip diğerini silebiliriz. Siz de çok basit bir şekilde jquery & ajax ile dinamik modal oluşturabilirsiniz.

Dinamik olarak ( Örnek : id ye göre ) modal açmak istiyorsanız paylaşacağım kod örneklerini kullanabilirsiniz.

Projenize JQuery kütüphanesini dahil etmeyi unutmayın.

<!-- HTML kısımdaki modalı açacağımız buton -->
<!-- "data-id" attribute içine PHP ile id yi yazdırın. -->
<button data-id="1" class="open_modal"></button>
<script>
$("body").on("click", ".open_modal", function (button) {
  var id=$(this).data('id'); // data-attr içindeki id yi aldık.
  $.ajax({
   type: 'POST',
   url: 'modal.php', // veriyi&modalı alacağımız yol
   data: {id:id}, // id parametremizi yolladık
   dataType:'JSON', //veriyi json olarak alacağız
   error: function (hata) {
     console.log(hata);
   },
   success: function (data) {
    console.log(data); //testiniz bittikten sonra başına slash ekleyebilirsiniz. 
    try {                  
      $("#my_modal").remove(); // Eski modal varsa sildik
      $("body").append(data.modal); // yeni modalı ekledik
      button.preventDefault();
      $('#my_modal').modal({
        autofocus: false
      }).modal('show');
    } catch (e) {
     console.log(e + "data:" + data);
    }

   }
  });
});
</script>

modal.php

<?php 

$id=$_POST['id'];
$sql='SELECT * FROM table WHERE id = $id';

$data['modal']='
 <div id="my_modal" class="modal fade" style="display:none">
   <div class="modal-content">
     <div class="modal-header">
       <h5>Sipariş Ver</h5>
         <form action="" method="POST">
          <input type"number" name="piece">
          <input type="text" disabled value="'.$sql["price"].'">
          <button type="submit">Sipariş Ver</button>
         </form>
      </div>
    </div>
  </div>';

echo json_encode($data);

Örnek sipariş oluştururken fiyatı dinamik olarak modal içine çekip, adet girdirmek için verilmiştir.

Kendi Modal Style ‘ ınıza göre değiştirip kullanabilirsiniz. Sadece küçük bir örnek gösterilmiştir.

İşleyiş mantığı jquery ajax ile php sayfamıza id yi post atıp, bu php sayfamıza json_encode edip echo ile basıyoruz. Bu sayfaya gelen jquery bunu okuyup body e append ile ekliyor. sonrasında da yine jquery içinde modal ı açıyoruz.

Bu jquery dinamik modal örneğini kolaylıkla e-ticaret, ürün detayı listeleme, quick view ( hızlı gösterim index ) gibi alanlarda kullanabilirsiniz.