如何正确构建json?

时间:2016-11-04 14:58:43

标签: javascript php json codeigniter

我在理解json格式时遇到了问题。我在CI控制器中有这个:

public function backend($con_id, $last_id)
        {
            header('Cache-Control: no-cache, must-revalidate');
            //header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
            header('Content-type: application/json');

            $data = $this->Msg_model->get_msg($con_id, $last_id);

            echo json_encode($data);
        }

模特中的位置:

public function get_msg($con_id, $last_id)
        {
            $this->db->select("msg_id, sender_id, msg");
            $this->db->where('conversation_id', $con_id);
            $this->db->where('msg_id >', $last_id);
            $this->db->order_by('msg_time', 'DESC');
            $this->db->limit(12);

            $query = $this->db->get('messages');
            return array_reverse($query->result_array());
        }

和JS:

...
$.getJSON(baseurl + path + con_id + '/' + last_msg, function(json) {
        $.each(json, function(i,val){
            if(login_id == val.sender_id){
                $('#messagewindow' + con_id).append('<div class="bubble"><p>' + val.msg + '</p></div>');
            } else {
                $('#messagewindow' + con_id).append('<div class="bubble bubble-right"><p>' + val.msg + '</p></div>');
            }
...

我添加了#34;加载更多&#34;按钮到我的聊天,它工作正常。问题是我必须指定是否应该显示它。加载的消息限制为12,因此只有在此对话有> 12条消息时才应添加按钮。我可以在控制器中进行检查。为此,我尝试了:

$data['more'] = // some stuff
            $data['msgs']= $this->Msg_model->get_msg($con_id, $last_id);

            echo json_encode($data);
控制器中的

$.each(json.msgs, function(i,val){
            if(login_id == val.sender_id){
                $('#messagewindow' + con_id).append('<div class="bubble"><p>' + val.msg + '</p></div>');
            } else {
                $('#messagewindow' + con_id).append('<div class="bubble bubble-right"><p>' + val.msg + '</p></div>');
            }
        });
在JS但是没有运气。我一直在尝试和阅读json几个小时...有人可以解释我需要什么 - json对象或数组......?

问题是 - 如何用json发送一堆无关的数据,然后在JS中处理?

例如,当传递数据进行查看时,您只需在控制器中执行此操作:

$data['somedata1'] = ...
$data['somedata2']= ...
$data['somedata3'] = ...

然后在视图中:

<?= $somedata1?>
<?= $somedata2?>
<?= $somedata3?>

0 个答案:

没有答案