我在理解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?>