我刚刚开始学习 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');
}
}
你的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
}
}