代码之家  ›  专栏  ›  技术社区  ›  fahmi hammadi

如何将数据从ajax传递到控制器,然后重新加载到查看页面

  •  0
  • fahmi hammadi  · 技术社区  · 8 年前

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

    就像我的标题一样,我想从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 回复  |  直到 8 年前
        1
  •  1
  •   Moses    8 年前

    根据调用返回的结果,您必须使用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));
    
    }
    
        2
  •  0
  •   Truong Dang    8 年前

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

        3
  •  0
  •   Kingsley Mitchell Yaroslav Mytkalyk    8 年前

    我经常使用代码点火器

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

    如 $(“p”)。html(“你好 世界 !");

    无需重新加载页面

        4
  •  0
  •   Hasta Dhana    8 年前

    更改 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;