0

我正在尝试使用 ajax 将 post 方法中的数据发送到控制器中。但它不起作用。它返回 303 并在之前执行最后一个 ajax。请有人帮忙

POST http://domain/updateTiket/done [HTTP/1.1 303 See Other 501ms]

GET http://domain/requestTiket [HTTP/1.1 200 OK 253ms]

这是我的输入

<form id="tiket_e" method="POST" enctype="multipart/form-data">
                <input type="hidden" id="<?= csrf_token(); ?>" value="<?= csrf_hash(); ?>" name="<?= csrf_token(); ?>">
                <input type="hidden" id="code_edit" name="code_edit">
                <div class="modal-body">
                    <div class="container-fluid">
                        <div class="form-group row">
                            <label class="col-sm-3 col-form-label">Card Number <small>(optional)</small></label>
                            <div class="col-sm-3">
                                <input name="card_rec_num_e" id="card_rec_num_e" class="form-control" type="text" required>
                            </div>
                        </div>
                        </div>
                    </div>
                </div>

                <div class="modal-footer">
                    <button class="btn btn-info execute" value="escalate" id="btn_escalate_e"><i class="far fa-arrow-alt-circle-up"></i> Eskalasi</button>
                    <button class="btn btn-primary execute" value="done" id="btn_done_e"><i class="far fa-check-circle"></i> Selesai</button>
                </div>
            </form>

这是我的脚本

$("#btn_escalate_e, #btn_done_e").on('click',function(){
   stat = $(this).val();
   $.ajax({
     type : "POST",
     url  : "<?php echo base_url('updateTiket')?>/"+stat,
     headers: {'X-Requested-With': 'XMLHttpRequest'},
     data : new FormData(document.getElementById("tiket_e")),
     dataType    : "JSON",
     processData:false,
     contentType:false,
     cache:false,
     async:false,
     success: function(data){
         window.alert(data.success);
     }
  });
  return false;
});

这是我的 routes.php

$routes->match(['get', 'post'],'/updateTiket/(:segment)', 'Main\TicketController::update/$1');

这是我的控制器

public function update($stat)
    {
        $id = $this->request->getPost('code_edit');
        $number = $this->request->getPost('card_rec_num_e');
        $update = $this->TiketModel->save([
            'id'=> $id, 
            'product_number'=> $number, 
        ]);
        if ($update) {
            $res = array('success' => 'Done');
            return $this->response->setJSON($res);
        }

    }

我只注意到一件事,它发生在我触发时data: new FormData(document.getElementById("tiket_e"))。如果我改变data: {id: $('#id').val()},它的工作原理,但我不能用它来上传文件..任何解决方案将不胜感激

4

0 回答 0