Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在控制器返回的Codeigniter视图中打印json_encode对象_Php_Jquery_Codeigniter - Fatal编程技术网

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

Php 在控制器返回的Codeigniter视图中打印json_encode对象,php,jquery,codeigniter,Php,Jquery,Codeigniter,我试图在我的视图中打印json_编码。但它总是显示为json对象。我想在html格式的输出中打印下面的对象。我只是为分页结果实现了一个类似twitter的more按钮。谁能帮帮我吗 这是我的控制器: function get_results($offset) { $this->load->model('my_model'); $this->data['latest_messages'] = $this->my_model->searchres

我试图在我的视图中打印json_编码。但它总是显示为json对象。我想在html格式的输出中打印下面的对象。我只是为分页结果实现了一个类似twitter的more按钮。谁能帮帮我吗

这是我的控制器:

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>';

    }
    <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'); ?> 

好的,您将得到json格式的结果。您只需要在ajax返回处理程序中操作这些结果,然后将它们附加到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);
    }
);
$.get(“+”控制器/get\u结果/“+加载的\u消息,
功能(数据){
var data=JSON.parse(数据);
var输出=”;
对于(var i=0;i;
}
$(“#主要内容”)。追加(输出);
}
);

json\u encode
在将php数组/变量转换为
javascript数组/变量时效果最佳。由于您正在对
json_encode
结果使用
echo
,因此它将在页面上输出。因此,也许您应该将其回显到javascript数组中,然后将其用于对象的输出?下面是您的代码:
echo json_encode($this->data['latest_messages'),这就是它显示的原因。您需要将其分配给js变量。类似:
echo'var oVal='。json_encode($this->data['latest_messages'])
然后使用
oVal.id
oVal.group_fk
oVal.email
oVal.username
在需要的地方通过javascript输出它。所以我需要删除
json\u encode
echo
吗?你应该在脚本标记中回送它,并将它放在js变量中,如我所示。。。如果你真的需要使用
json\u encode
的话,那么就用这个方法吧。我已经根据你的评论更新了控制器。现在“更多”按钮不起作用了:-(.对不起,我对codeigniter和jqueryHey swatkins有点陌生。谢谢你的回答。当我点击“更多”按钮时,它将数据添加为
未定义-未定义-未定义-未定义-
你能在
函数(数据)下添加
控制台.dir(数据);
{
行并告诉我输出是什么?输出没有变化。它是相同的
未定义的
控制台说什么?嘿,斯沃金斯,我已经在你的答案中更新了控制台输出。谢谢你的支持。
$.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);
    }
);