在codeigniter中使用json格式的foreach循环

时间:2017-07-25 13:08:35

标签: ajax codeigniter

  

我想在json中循环一个表,

     

我的返回值是

Array(
[0]Array(
[m_id]=>2
[event_id]=>37
[activity_id]=>20
)
[1]Array(
[m_id]=>20
[event_id]=>3
[activity_id]=>2
)
)
  

我的脚本是

function get_out_mail(user_name){                       
                    var datastring = 'user_name=' + user_name;
                    alert(datastring);
                    var a = false;
                    $.ajax({
                            type: "POST",
                            async: false,
                            url: "<?php echo site_url(); ?>admin/get_out_mails",
                            data: datastring,
                            cache: false,
                            success: function (result) {
                                alert(result);
                                var result = $.parseJSON(result);
                                console.log(result.from);
                                $('#myTable').html('');
                                $("#myTable").append('<tbody><?php foreach ($get_all_mail as $get_all_mails) { ?><tr id="target-list"><td><input type="checkbox" id="mail-checkbox-1" class="custom-checkbox"></td><input type="hidden" name="mid" value="<?php echo $get_all_mails['m_id']; ?>"/><td><i class="glyph-icon icon-star"></i></td><td class="email-title" ><?php echo $get_all_mails['from']; ?></td><td class="email-body" ><?php echo $get_all_mails['subject'] ?></td><td><i class="glyph-icon icon-paperclip"></i></td><td>17 Jan 2014</td></tr><?php } ?></tbody>');
                            }
                        });
                        return a;
                    }
  

我的控制器

public function get_out_mails(){
    if ($this->session->userdata('admin_logged_in')) {
        $user_name = $this->input->post('user_name');
        $result['out_mail'] = $this->admin_model->get_out_mailss($user_name);
        print_r($result['out_mail']);
}
  

这里我想使用foreach循环在json中追加我的返回数组值,我该怎么做呢。

2 个答案:

答案 0 :(得分:0)

这是ajax请求最好在控制器中返回完整的html部分,而不是追加到View页面中:

控制器示例:

echo $values ="<body>
         <tr> test</tr>
   </body>";

View : Success :  function(data){
     $('#id').html(data);
}

通过它,您将隐藏视图页面中的完整循环并获取控制器中的代码

答案 1 :(得分:0)

用这个替换你的控制器功能:

public function get_out_mails(){
    if ($this->session->userdata('admin_logged_in')) {
        $user_name = $this->input->post('user_name');
        $result['out_mail'] = $this->admin_model->get_out_mailss($user_name);
        $data = '<tbody>';
        foreach ($get_all_mail as $get_all_mails) {
            $data .= '<tr id="target-list"><td><input type="checkbox" id="mail-checkbox-1" class="custom-checkbox"></td><input type="hidden" name="mid" value="'.$get_all_mails['m_id'].'"/><td><i class="glyph-icon icon-star"></i></td><td class="email-title" >'.$get_all_mails['from'].'</td><td class="email-body" >'.$get_all_mails['subject'].'</td><td><i class="glyph-icon icon-paperclip"></i></td><td>17 Jan 2014</td></tr>';
        }
        $data .= '</tbody>';
        echo $data;
}

并用以下内容替换你的脚本:

function get_out_mail(user_name){
    alert(datastring);
    var a = false;
    $.ajax({
        type: "POST",
        async: false,
        url: "<?php echo site_url(); ?>admin/get_out_mails",
        data: {'user_name': user_name},
        cache: false,
        success: function (result) {
            alert(result);
            var result = $.parseJSON(result);
            console.log(result.from);
            $('#myTable').html(result);
        }
    });
    return a;
}