我想要这个功能:
在我选择一个选项后,我想立即更新数据库,然后立即在某个div内显示它。我怎样才能做到这一点?
这是我的HTML:
<select id="category1" name="cat1">
<option>Hardware</option>
<option>Software</option>
<option>Network</option>
</select>
AJAX代码:
$('#category1').on('change',function(){
var data = $("cat1").val();
var ticket = '<?php echo $ticket_details[0]["cTicketNo"];?>';
if(data){
jQuery.ajax({
type: "POST",
dataType: 'json',
url: "<?php echo base_url();?>User/TicketView/update_cate",
data: {data: data,ticket: ticket},
success:function(response){
alert('successful');
},
error: function(response){
alert('tangina!');
}
});
}
});
控制器:
function update_cate(){
$this->TicketView_m->update_cat1();
redirect($_SERVER['HTTP_REFERER']);
}
型号:
function update_cat1(){
$ticket_id = $_POST['ticket'];
var_dump($cat = $_POST['data']);
$this->db->set('vCategory',$cat);
$this->db->where('cTicketNo',$ticket_id);
$this->db->update('tconcerns');
}
谢谢所有帮助!
答案 0 :(得分:0)
删除redirect($_SERVER['HTTP_REFERER']);
,你不需要。
首先,AJAX允许您将数据发送到服务器而无需重定向到另一个页面。
基于您的AJAX dataType。这是JSON。因此,要获得结果,您必须将其编码为JSON,如json_encode(['result' => 'things you want to show'])
。
然后你可以在你的回复中访问它:
success:function(response){
alert('successful');
var res = response.result; //Access the JSON
$("#certainDiv").html( res ); //Print to the div you want
}
最好在控制器中获取发布请求,然后将其传递给您的模型:
function update_cate(){
$ticket_id = $this->input->post('ticket');
$cat1 = $this->input->post('cat1');
$this->TicketView_m->update_cat1($ticket_id, $cat1);
echo json_encode(['result' => 'things you want to show']);
}