doo6568 2013-11-28 04:33
浏览 48
已采纳

在控制器返回的Codeigniter视图中打印json_encode对象

I am trying to print the json_encode in my view. But its always displaying as json object. I want to print the below object in an html formatted output. I am just implementing a twitter like more button for the pagination results. Can some one help me.

Here is my Controller:

function get_results($offset)
    {
    $this->load->model('my_model');
    $this->data['latest_messages'] = $this->my_model->searchresult($offset);
    $this->output->set_header('Content-Type: application/json; charset=utf-8');
    echo '<script> var data = ' . json_encode($this->data['latest_messages']). ' </script>';

    }

Here is my View:

    <script type="text/javascript">
google.load("jquery", "1.10.1");
</script>
<script type="text/javascript">
    $(document).ready(function(){
    var num_messages = <?=$num_messages?>;
    var loaded_messages = 0;
    $("#more_button").click(function(){
    loaded_messages += 10;
    $.get("<?php echo $base_url;?>" + "controller/get_results/" + loaded_messages,            function(data){
                $("#main_content").append(data);

            });

            if(loaded_messages >= num_messages - 10)
            {
                $("#more_button").hide();
            }
        })
    })
</script>
<link rel="stylesheet" href="<?=base_url();?>css/main.css" type="text/css" />
  </head>
  <body>
   <?php $this->load->view('includes/topbar'); ?>
    <?php $this->load->view('includes/menu'); ?>      
    <?php $this->load->view('includes/left'); ?>        

  <div id="contentwrap">
    <div id="content">

        <div id="main_content">
                <?php
                foreach($this->data['latest_messages'] as $message)
                {
                    echo $message->email . ' - ' . '<br />';
                }
                ?>
        </div>
    <div id="more_button">
        More
    </div>
  </div>     
  </div>
    <?php $this->load->view('includes/right'); ?>   
    <?php $this->load->view('includes/foot'); ?> 

When I click on More link, the results are loading fine but I want to display the results in a nice formatted output instead of json object as shown below

[
{" id":"11"," group_fk":"1"," email":"test1@gmail.com"," username":"test1"},
{" id":"12"," group_fk":"1"," email":"test2@gmail.com"," username":"test2"},
{" id":"13"," group_fk":"1"," email":"test3@gmail.com"," username":"test3",},
]
  • 写回答

1条回答 默认 最新

  • douyiken0968 2013-11-30 19:17
    关注

    OK, so you're getting results in json format. You just need to manipulate those results in your ajax return handler and then append them to the div:

    $.get("<?php echo $base_url;?>" + "controller/get_results/" + loaded_messages,  
        function(data){
            var data = JSON.parse(data);
            var output = "";
            for (var i = 0; i < data.length; i++) { 
                output += data[i].email + ' - <br />';
            }
            $("#main_content").append(output);
        }
    );
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名