Ajax 不执行 codeigniter 4 中控制器函数中的 if 条件语句,

问题描述 投票:0回答:1

我刚刚开始学习 jQuery 和 Ajax 以及 Codeigniter 4 框架,当我尝试使用 Ajax 更新数据库中的某些列时遇到了这个问题,碰巧 Ajax 工作得很好并通过更新功能更新数据库上的数据但如果 Ajax 没有通过 url 触及条件语句,会出现什么问题?

我的 jQuery/Ajax

<script type="text/javascript">
     $(document).ready(function(){
        $('.downloadRep').on('click',function(){
                $('#DownloadRep').modal('show');

                 $tr=$(this).closest('tr');

                var data=$tr.children("td").map(function(){
                    return $(this).text();
                }).get();

                $('#data_id').val(data[0]);

            });
         

        $(document).on('click','#submitForm',function(){

              if($.trim($('.name').val()).length==0){
                error_name='Enter full name';

                $('#error_name').text(error_name);
              } 
              else
              {
                error_name='';
                $('#error_name').text(error_name);
              } 

                if($.trim($('.phone').val()).length==0){
                error_phone='Enter Phone Number';

                $('#error_phone').text(error_phone); 
              } 
              else
              {
                error_phone='';
                $('#error_phone').text(error_phone);
              }

                if($.trim($('.dateof').val()).length==0){
                error_date='Enter the date';

                $('#error_date').text(error_date);
              } 
              else
              {
                error_date='';
                $('#error_date').text(error_date);
              }

              if(error_name!=''|| error_phone!=''|| error_date!=''){
                    return false;
              }
              else{

                var data={
                    'data_id':$('.data_id').val(),
                    'name':$('.name').val(),
                    'phone':$('.phone').val(),
                    'dateof':$('.dateof').val()
                }

                $.ajax({

                    method: "POST",
                    url: "<?=base_url('/admin/downloadrep');?>",
                    data: data,
                    success: function(response){
                        location.reload();
                        $('#DownloadRep').modal('hide');
                        $('#DownloadRep').find('input').val('');  
                    }

                });


              }
            });
     });
</script>

这是控制器方法,

public function downloadrep(){

        $dataId=$this->request->getPost('data_id');

        $data = [

               'name_of_valuer'=>$this->request->getPost('name'), 
               'phone'=>$this->request->getPost('phone'),
               'date_report'=>$this->request->getPost('dateof') 

           ];

        $downloadrep= new \App\Models\ValuerReq(); 

        $dataupdatetodownload= $downloadrep->update($dataId,$data);

           if(!$dataupdatetodownload){     

            return redirect()->back()->with('fail', 'Not Updated');
    

        }else{
            
            
            return redirect()->to('/admin/valuersrequesttoadminsub')->with('success', 'Download Started'); 
        }




    }
php jquery ajax codeigniter-4
1个回答
0
投票

你的AJAX响应应该是JSON,但在你的php代码中它使用的是redirect(),它不适合AJAX响应,但它应该是这样的

if (!$dataupdatetodownload) {     
    return $this->response->setJSON(['status' => 'fail', 'message' => 'Not Updated']);
} else {
    return $this->response->setJSON(['status' => 'success', 'message' => 'Download Started']);
}

在你的 AJAX 响应中是这样的

success: function(response){
    if(response.status === 'success') {
        // Handle success scenario
    } else {
        // Handle failure scenario
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.