PHP: я не могу перенаправить в основную таблицу после вставки данных в форму с ajax - PullRequest
0 голосов
/ 02 августа 2020

Это мой сценарий, когда открыта форма множественной вставки:

<script src="<?= base_url('assets/'); ?>vendor/jquery/jquery.min.js"></script>
<script type="text/javascript">
   $(document).ready(function(){
      var i =1;
      $('#add').click(function(){
        i++;

        $('#dynamic_field').append('<tr id="row'+i+'"> <td><select name="bhn_id[]" id="bhn_id" placeholder="enter name" class="form-control form-control-sm bhn_id"><option value="">-- Pilih Bahan --</option><?php foreach ($data_bahan->result_array() as $key => $tb_bahan) : ?>
                            <option <?= set_select('bhn_id', $tb_bahan['id_bhn']) ?> value="<?=$tb_bahan['id_bhn'] ?>"><?= $tb_bahan['nm_bhn'] ?></option><?php endforeach; ?>
                              <?= form_error('bhn_id', '<small class="text-danger">', '</small>'); ?>
                          </select><?= form_error('bhn_id', '<small class="text-danger">', '</small>'); ?></td><td width="100"><input type="number" class="form-control form-control-sm jlh_keluar"  name="jlh_keluar[]" id="jlh_keluar" value="<?= set_value('jlh_keluar'); ?>"></td><td align="center" width="100"><button type="button" name="remove" id="'+i+'" class="btn btn-outline-danger btn-sm btn_remove">x</button></td></tr>');
        });
    $(document).on('click', '.btn_remove', function(){
      var button_id = $(this).attr("id");
      $("#row"+button_id+"").remove();
      });

    $('#submit').click(function(){
      $.ajax({
        url:"<?= base_url('m_form_bahan_keluar/tambah_bahan');?>",
        method:"POST",
        data:$('#add_jenis').serialize()
        // success:function(data)
        // {
        //   $('#add_jenis')[0].reset("");

        // }
      });
    });

   });
</script>

И это контроллер, который запускается, когда я нажимаю кнопку отправки.

public function tambah_bahan()
    {
    
        $mysqli = new mysqli("localhost", "root", "", "db_labgizi");
        $data['title'] = 'Tambah Pengeluaran Bahan';
        $data['data_bahan'] = $this->TransaksiBahan_model->get_bahan();
        $data['data_user'] = $this->Db_model->getid();
        $data['id_formbhnkeluar'] = $this->TransaksiBahan_model->Id_Bahan_keluar();
        
        $a = count($_POST["bhn_id"]);  
        $b = count($_POST["jlh_keluar"]);
        if($a > 0)  {  
           for($i=0; $i<$a; $i++) {  
             if(trim($_POST["bhn_id"][$i] != '') && trim($_POST["jlh_keluar"][$i] > '0')) {  
                $bhn_id = $mysqli -> real_escape_string($_POST['bhn_id'][$i]);
                $jlh_keluar = $mysqli -> real_escape_string($_POST['jlh_keluar'][$i]);
                $id_formbhnkeluar = $mysqli -> real_escape_string($_POST['id_formbhnkeluar']);
                $penerima = $mysqli -> real_escape_string($_POST['penerima']);
                $laboran = $mysqli -> real_escape_string($_POST['laboran']);
                $tgl_bhnkeluar = $mysqli -> real_escape_string($_POST['tgl_bhnkeluar']);
                $ket_formbhnkeluar = $mysqli -> real_escape_string($_POST['ket_formbhnkeluar']);
                $sql="INSERT INTO tb_formbahankeluar(id_formbhnkeluar,tgl_bhnkeluar,laboran,penerima,ket_formbhnkeluar)
                VALUES ('$id_formbhnkeluar', '$tgl_bhnkeluar',
                '$laboran','$penerima','$ket_formbhnkeluar')";
                $sql2="INSERT INTO tb_bahan_keluar(formbhnkeluar_id,bhn_id,jlh_keluar) VALUES
                ('$id_formbhnkeluar', '$bhn_id', '$jlh_keluar')";
                
                 $mysqli -> query($sql);
                 $mysqli -> query($sql2);                      
          }  
         } 
        redirect('M_bahan_keluar/index');
        pesan('save');
                
        }  
                
        else {   
         pesan('disimpan', false);
         }   
        }

Проблема в том, что я не может перейти в основную таблицу (M_bahan_keluar / index) после успешной вставки данных, он просто все еще открывает форму. Как это должно быть?

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

вы можете установить после того, как коды окончательно перенаправят вашу страницу на ваш собственный адрес с помощью этого:

window.location = "your custom address";
0 голосов
/ 02 августа 2020

Похоже, вы вызываете перенаправление из конечной точки ajax. Вызов ajax - это отдельный http-запрос, и события, происходящие с ним, например, его перенаправление, не влияют на начальное соединение вашего браузера с сервером.

Вместо перенаправления в php внутри конечная точка ajax, вам нужно будет включить перенаправление в свой вызов javascript / jquery. Вы можете использовать «готово» для выполнения sh этого.

$.ajax({
        url:"<?= base_url('m_form_bahan_keluar/tambah_bahan');?>",
        method:"POST",
        data:$('#add_jenis').serialize()
      }).done(function( msg ) {
    redirect('M_bahan_keluar/index')
  });

обратный вызов done обсуждается на https://api.jquery.com/Jquery.ajax/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...