如何将数据从ajax传递给控制器​​然后重新加载到视图页面

时间:2018-03-29 02:05:37

标签: javascript php jquery json codeigniter

我使用代码点火器,我不知道它是否重复,因为我几乎都根据我的标题搜索。

就像我想要从ajax传递数据一样,在控制器中处理它然后在视图中显示它。

这里是我的jquery

$('.input').click(function(){
        var id_ticket = $(this).attr('id');
        $.ajax({
            type : 'POST',
            url  : '<?=site_url("settlement/edit_trouble_ticket");?>',
            data : 'id='+id_ticket,
            beforeSend:function(){
                $('#ajax-loader').show();
            },
            error: function(){
                $('#ajax-loader').hide();
                alert('Error\nGagal request data');
            },
            success: function(data){
                $('#ajax-loader').hide();
                //??
            }
        });
    });

将这些数据传递给我控制器中的进程

function edit_trouble_ticket() {
        $where = trim($this->input->post('id'));

        $out = $this->settlement_model->get_trouble_tiket($where);
        foreach ($out as $row) {
                $result['id']               = $row->id;
                $result['mid']              = $row->mid;
        }
        $this->load->view('rekon_settlement/cm_edit', $result);
    }

模型只是获取所有这些数据的一些代码,在得到这些结果之后我想在我的视图中看到结果 在这里,我的观点很简单:

<table class="formstable">
                    <tr><th colspan="2">Data Trouble Ticket</th></tr>
                    <tr>
                        <td>MID</td>
                        <td><?=form_input('', $result['mid'], 'disabled="disabled"')?><?=form_hidden('mid', $result['mid'])?></td>
                    </tr>
                    <tr><td>TID</td><td><?=form_input('', $result['tid'], 'disabled="disabled"')?><?=form_hidden('tid', $result['tid'])?></td></tr>
                    <tr>
                        <td></td>
                        <td>
                            <?=form_reset('reset', 'Reset', 'class="button reset"')?>
                            &nbsp;&nbsp;
                            <?=form_submit('submit', 'Submit', 'class="button submit" onclick="return confirm(\'Apa Anda yakin?\');"')?>
                        </td>
                    </tr>
                </table>

4 个答案:

答案 0 :(得分:0)

我刚刚阅读了你的标题,我认为你可以使用javascript函数window.location在ajax发送后重新加载整个视图页面

答案 1 :(得分:0)

我经常使用代码点火器

当你从ajax获得响应时使用.html 链接 https://www.w3schools.com/jquery/html_html.asp

例如       $(&#34; p&#34;)。html(&#34; Hello world !&#34;);

无需重新加载页面

答案 2 :(得分:0)

您必须使用js重定向,具体取决于从呼叫返回的结果

$('.input').click(function(){
    var id_ticket = $(this).attr('id');
    $.ajax({
        type : 'POST',
        url  : '<?php echo site_url("settlement/edit_trouble_ticket");?>',
       // make sure your providing proper url t
        data : {id:id_ticket},
        beforeSend:function(){
            $('#ajax-loader').show();
        },
        error: function(){
            $('#ajax-loader').hide();
            alert('Error\nGagal request data');
        },
        success: function(data){
            $('#ajax-loader').hide();
            if(data['res']){
                window.location.assign("https://www.yoursite.com");
             }         
        }
    });
});
//ajax edit


function edit_trouble_ticket() {
$result=array();
$result['res']=false;
    $where = trim($this->input->post('id'));
    $out = $this->settlement_model->get_trouble_tiket($where);

    foreach ($out as $row) {
            $result['id']               = $row->id;
            $result['mid']              = $row->mid;
    }

    // Am not sure hat the model returns if no match.so i will do
    if(count($result)>0){
        $result['res']=true;
    }

    $this->output->set_content_type('application/json')->set_output(json_encode($result));

}

答案 3 :(得分:0)

更改id ajax参数,然后应用您想要显示返回视图的任何jquery方法,例如使用append()方法:

$('.input').click(function(){
    var id_ticket = $(this).attr('id');
    $.ajax({
        type : 'POST',
        url  : '<?=site_url("settlement/edit_trouble_ticket");?>',
        data : {id:id_ticket},
        beforeSend:function(){
            $('#ajax-loader').show();
        },
        error: function(){
            $('#ajax-loader').hide();
            alert('Error\nGagal request data');
        },
        success: function(html){
            // $('#ajax-loader').hide();
            $('#ajax-loader').parent().append(html);
        }
    });
});

并在第三个参数上设置TRUE,以便它将数据作为字符串返回,而不是将其发送到您的浏览器:

$cm_edit = $this->load->view('rekon_settlement/cm_edit', $result, TRUE);
echo $cm_edit;