codeigniter使用ajax更新数据库然后显示

时间:2017-03-22 07:33:42

标签: php jquery ajax codeigniter

我想要这个功能:

在我选择一个选项后,我想立即更新数据库,然后立即在某个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');
}

谢谢所有帮助!

1 个答案:

答案 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']);
}