我使用 $.ajax 检查控制器上的数据。如果在我放入数组进行 json 编码的变量之前没有任何进程,它工作正常。控制器回显数据,但视图不会将其呈现为 json 编码数据。控制器:
public function redeem($item){
$this->load->model('point_model');
$cost = 0;
switch($item){
case 'umbrella':
$cost = 100;
break;
case 'jacket':
$cost = 200;
break;
case 'mug':
$cost = 50;
break;
}
$tixD = $this->point_model->getTicks($_SESSION['playerID']);
$tix = $tixD[0]->pticks;
if($tix < $cost){
$this->load->model('prize_model');
$this->prize_model->setPrize($item,$_SESSION['playerID']);
$newTix = $tix - $cost;
$yes = $this->point_model->updateTicks($newTix,$_SESSION['playerID']);
if($yes){
$message = 'Ready to redeem your '.$item;
$code = 900;
}
}else{
$message = 'Insufficient tickets.';
$code = 911;
}
$echo = array('message'=>$message,'code'=>$code);
header('Content-Type: application/json',true);
echo json_encode($echo);
}
编辑:将数组上的 $yes 更改为 $message
jquery 在我看来:
$('.jacket-btn').click(function(){
$.ajax({
url: '<?php echo base_url('store/jacket'); ?>',
method: 'POST',
dataType: 'json',
success: function(res){
console.log(res);
modal = $('#instructions .modal-body');
var child = '<span class = "note">'+res.message+'</span>';
modal.removeClass('instructions-content').addClass('notif');
$('.notif').append(child);
$('#instructions').modal('show');
}
});
});
如您所见,我使用了 dataType: json 以及 json_encode 但如果变量来自变量之前没有进程的 else 块,我只会得到 json 对象。为什么它只有在变量之前没有过程的情况下才有效?是因为我的模特回归吗?