在 codeigniter 中使用 ajax 打印获取的数据

Print fetched data with ajax in codeigniter

我正在尝试与 ajax 建立聊天室。到目前为止,我可以在没有页面加载的情况下将数据存储在数据库中。并且还能够使用 ajax 获取数据并在屏幕上显示。这是我对 ajax

所做的
$('#chat').submit(function(){
 var chatmsg = $("#chatmsg").val();       //chat message from input field
 var chatroomid = $("#chatroomid").val();   //hidden input field
   $.ajax({
       url: baseurl+'User_dash/chatmessage',  //An function in ctroller which contains only insert query
       type: 'post',
       data: {chatmsg:chatmsg, chatroomid:chatroomid},
       dataType: 'json',
       success: function (argument) {
         if(argument['status']){                 
         
                $("#chatting").append(" <li id='"+getvalue+"'>"+argument['msg']+"</li>."); //Here I am printing chat message which resently submitted in database
                
            }
         }
       },
       error: function (hrx, ajaxOption, errorThrow) {
           console.log(ajaxOption);
           console.log(errorThrow)
       }
   });
   return false; 
 });

此方法与 ajax 一起工作正常。但是我在这里遇到的问题是,这只向当前用户显示聊天消息。不发送给正在通过聊天发送消息的用户的另一方。

为了解决这个问题,我想出了一个主意,但似乎并没有按我的计划行事。这是我修改以前的 ajax 代码的方式..

      $('#chat').submit(function(){
 var chatmsg = $("#chatmsg").val();       
   $.ajax({
       url: baseurl+'User_dash/chat',  //controller function which contains insert query, after that select query to fetch chat data from db and store in view
       type: 'post',
       data: {chatmsg:chatmsg},
       dataType: 'json',
       success: function (argument) {
         if(argument['status']){
             //Not doing anything here this time
         }
       },
       error: function (hrx, ajaxOption, errorThrow) {
           console.log(ajaxOption);
           console.log(errorThrow)
       }
   });
   return false; 
 });

在脚本的更新版本中,我想如果我将调用一个在视图(聊天页面)中存储数据的控制器函数,那么它将 运行 在没有页面加载的情况下查询和打印数据。

但是使用这种方法,我只能在页面加载后才能在屏幕上聊天,尽管它可以在数据库中以 ajax 正常提交。

这是我第二种方法的控制器代码,如果需要的话 ajax

    public function chat(){
    
    if(!empty($_POST['chatmsg'])){
        
        $chatdata = array('CHAT_ROOM'=>$_POST['chatroomid'],
                        'VENDOR'=>$this->session->userdata('USER_ID'),
                        'BUYER'=>49,                        
                        'MESSAGE'=>$_POST['chatmsg']
                      );
                      
        $this->db->insert('tbl_chat', $chatdata); //inserting data          
    }
    
    $data['chatroom'] = $this->db->where('CHAT_ROOM', 1)->get('tbl_chat')->result_array(); //fetching data from db
    
    $this->load->view('userDash/chat', $data);      
}

如何在不加载页面的情况下 运行 插入然后 select 在屏幕上查询和打印数据?

我哪里错了?

我之前解决了我的问题,我所做的是,只是添加了这个 jquery 脚本,它不断刷新(每秒)某个 div 内部页面,我在其中查询以获取聊天来自数据库并打印它们。

setInterval(function(){ 
  $("#chatting").load(location.href + " #chatting");
}, 1000);