簡體   English   中英

從 controller 獲取數據到 php codeigniter 中的同一視圖頁面

[英]Get data from controller into same view page in php codeigniter

當用戶單擊特定聊天時(您可以說 div 具有隱藏的 id 輸入字段),我正在嘗試獲取消息,就像 Messenger 一樣。 視圖與我發送數據的視圖相同。 第一次打開收件箱時,左側會添加一個聊天列表,右側是空白的,直到用戶單擊聊天。 圖像1 img2

這是我的代碼,當用戶單擊特定聊天列表時,我從中獲取 id。 我獲得了可以獲取所有消息的 ID。 我使用不同的模型,因為我對兩者都有不同的查詢。 我不知道如何獲取從 ajax 獲得的 json 數據到 php 變量中,以便我必須循環並顯示消息。 附上代碼和圖片以供參考。

Model

public function get_msg($employer_id)
 {
   $query1 = $this->db->select()
   ->where('msg_from_id', $employer_id)
   ->group_by('msg_from',$employer_id)
   ->from('inbox')
   ->get('');

   return $query1->result();
 }
public function get_all_msgs($msg_from_id,$msg_to_id)
 {
  $conditions = array('msg_from_id' => $msg_from_id, 'msg_to_id' => 
   $msg_to_id);

   $query1 = $this->db->select()
      ->where($conditions)
      ->from('inbox')
      ->get('');

    return $query1->result_array();
 }

Controller:

public function get_all_msgs()
 {
   $postData = $this->input->post();
   $msg_to_id= $postData['msg_to_id'];
   $msg_from_id=$postData['msg_from_id'];

   $this->load->model('employermodel');

   $get_all_msgs=$this->employermodel->get_all_msgs($msg_from_id,$msg_to_id);
    if($get_all_msgs!=NULL){
      echo json_encode($get_all_msgs);
  }
}
public function inbox(){

  $emp = $this->session->userdata('user_email');
  $emp_id = $this->session->userdata('user_id');

  $employer_id=$emp_id;
  if($emp_id == NULL){
  return redirect('users/index');
  }

$this->load->model('employermodel');
$get_msgs=$this->employermodel->get_msg($employer_id);
if($get_msgs!=NULL){

  $this->load->view('inbox',['get_msgs'=>$get_msgs,]);
  
}

}

同一視圖頁面上的 Javascript/ajax,即“收件箱”:

$('.msgs-ConversationListPane').click(function (e) {

    if ($('.msgs-ConversationListPane').hasClass('is-active')) {
        $(this).removeClass('is-active');
        $('.msgs-ConversationPane').addClass('is-active');
        $('.msgs-ConversationPane').removeClass('is-splash');
        // $('.msgs-ConversationPane').load('.msgs-Conversation'.href);
        $(".msgs-ConversationPane").html($("." + $(this).attr('rel')).html());

        var msg_to_id = $('#msg_to_id').val();
        var msg_from_id = $('#msg_from').val();
        var get_all_msgs;
        $.ajax({
            type: "POST",
            url:'<?=base_url()?>employer/get_all_msgs',
             data: {msg_to_id: msg_to_id,
                msg_from_id:msg_from_id},
                dataType: 'json',
            cache: false,
            success: function (data) {
                // JSON.stringify
                get_all_msgs = data;
                $("#res").html(get_all_msgs);
                // console.log(get_all_msgs);
                $(".msgs-ConversationPane").css('display', 'block');
               
            },
            
            error: function(xhr, status, error) {
                console.log(error);
                },
        
        })
        // .done(function(get_all_msgs) {
        
        ;
    } else if ($('.msgs-ConversationPane').hasClass('is-splash')) {
        $(this).removeClass('is-splash');
        $(this).addClass('is-active');
        $('.msgs-ConversationListPane').addClass('is-splash');
        $('.msgs-ConversationListPane').removeClass('is-active');
    }
});

您不想將 json 數據放入 php 變量中。 Php 在服務器端執行,ajax 在客戶端執行。 ajax 使用的好處是在服務器執行完成后動態更改內容。 您想通過 JavaScript 更新屏幕內容(因此僅在用戶端)。 下一步是提取 json 數據並將消息 div 添加到消息容器 div。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM