【问题标题】:how to pass data from ajax to controller then reload to view page如何将数据从 ajax 传递到控制器然后重新加载以查看页面
【发布时间】:2018-03-29 02:05:37
【问题描述】:

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

就像我的标题一样,我想从 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>

【问题讨论】:

  • 你的问题是什么?错误?
  • 要在该过程之后重新加载您的页面,您可以想象您的控制器方法显示一些 JSON。您的 ajax 可以解析 json 结果并在完成时重新加载,如果没有则显示错误,等等...

标签: javascript php jquery json codeigniter


【解决方案1】:

您必须根据调用返回的结果使用 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));

}

【讨论】:

  • 我在哪里分配视图
  • 从成功的ajax调用成功:function(data){ $('#ajax-loader').hide(); if(data['res']){ window.location.assign("yoursite.com"); } }
  • 空白页,页面无响应
【解决方案2】:

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

【讨论】:

  • 如果我重新加载它会重新加载我现在打开的页面
【解决方案3】:

我经常使用代码点火器

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

例如 $("p").html("你好世界!");

无需重新加载页面

【讨论】:

  • 我需要从控制器传递数据
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2019-07-10
    • 2019-07-18
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多