Codeigniter AJAX中的消息系统

时间:2016-02-11 05:33:34

标签: php jquery ajax codeigniter

好日子,我不知道如何在Codeigniter上进行ajax调用 有没有人可以告诉我这里怎么做?这对我的编程生涯有很大的帮助。我正在观看教程,但这不是我需要的方式。
所以这是一个过程,一旦我在数据库上提交数据,整个页面就不能加载并更新我在视图上的记录。我尽我所能,但我想我现在真的需要你的帮助。谢谢你。

我的剧本

    <script>
$(document).ready(function(){   

    $("#send").click(function()
    {       
     $.ajax({
         type: "POST",
         url: <?php echo base_url()?> + "messages/send_message", 
         data: {textbox: $("#textbox").val(),owner: $("#owner").val()},
         dataType: "text",  
         cache:false,
         success: 
              function(data){
                alert(data);  //as a debugging message.
              }
          });// you have missed this bracket
     return false;
 });
 });
        </script>

我的控制器

    function send_message()
    {
        $sk = random_string('alnum',5).time();
        $from= $_SESSION['username1'];
        $owner = $_POST['owner'];
        $desc = $_POST['textbox'];
        $to = $this->Model_items->get_owner_name($owner);
        $from = $this->Model_items->get_owner_name2($username);
        date_default_timezone_set('Asia/Manila');
        $date = date("Y-m-d H:i:s");
        $data = array('message_from_username'=>$username,'message_to_username'=>$owner,'message_sk'=>$sk,'message_desc'=>$desc,'message_from'=>$from,'message_to'=>$to,'message_date'=>$date,'status'=>1);
        $this->Model_messages->message_owner($data);

    }

我的模特

    function message_owner($data)
    {
        $this->db->insert('messages',$data);
    }

    function view_convo($from,$username)
    {
        $query = $this->db->query("Select * from messages where 
            (message_from_username = '$username' AND message_to_username = '$from') OR
            (message_from_username = '$from' AND message_to_username = '$username') 
             order by message_id desc");

        return $query->result();
    }

我的观点

    <div class="col-md-9 ui segment pre-scrollable" style="min-height:100px;">
          <h3 class="ui dividing header">Conversation with <?php echo $convo_with?>
          </h3>
        <div class="ui comments">

        <?php 
            foreach($convo as $key)
            {
            ?>
          <div class="comment">
            <a class="avatar">
              <img src="<?php echo base_url()?>img/default-avatar.png" style="width:30px;height:25px;border-radius:50%;">
            </a>
            <div class="content">
              <a class="author"><?php echo $key->message_from?></a>
              <div class="metadata">
                <span class="date">
                    <?php       
                 date_default_timezone_set('Asia/Manila');
                    $now = strtotime(date("Y-m-d H:i:s"));
                    $date = strtotime($key->message_date);
                    $dateDiff = abs($now - $date);
                    $fullDays = floor($dateDiff/(60*60*24));
                     if($fullDays==0)
                     {
                        echo " Today ";
                     }
                     else if($fullDays==1)
                     {
                        echo " Yesterday ";
                     }
                     else
                     {
                        echo $fullDays ." days ago";
                     }
                     $at=date('g:iA',$date)
                    ?> at <?php echo $at?>
                </span>
              </div>
              <div class="text">
                <?php echo $key->message_desc?>
              </div>
            </div>
          </div>
          <?php 
            }
            ?>
            <br>
        </div>

<form method="post">
    <input id="owner" type="hidden" value="<?php echo $this->uri->segment(3);?>" name="owner">
    <input id="textbox" type="text" name="textbox">
    <input id="send" type="submit" name="send" value="Send">
</form>             

</div>

2 个答案:

答案 0 :(得分:0)

您需要向ajax调用发回一些内容 更新你的控制器函数以返回一个带有更新消息列表的json,从json你在成功函数中使用json来更新消息列表

function send_message()
    {
        $sk = random_string('alnum',5).time();
        $from= $_SESSION['username1'];
        $owner = $_POST['owner'];
        $desc = $_POST['textbox'];
        $to = $this->Model_items->get_owner_name($owner);
        $from = $this->Model_items->get_owner_name2($username);
        date_default_timezone_set('Asia/Manila');
        $date = date("Y-m-d H:i:s");
        $data = array('message_from_username'=>$username,'message_to_username'=>$owner,'message_sk'=>$sk,'message_desc'=>$desc,'message_from'=>$from,'message_to'=>$to,'message_date'=>$date,'status'=>1);
        $this->Model_messages->message_owner($data);
       $datareturned =  $this->Model_messages->view_convo($from,$to);
        return json_encode(array('message'=>'Database Updated successfully','data'=>$datareturned));
    }

JS:

$(document).ready(function(){   

    $("#send").click(function()
    {       
     $.ajax({
         type: "POST",
         url: <?php echo base_url()?> + "messages/send_message", 
         data: {textbox: $("#textbox").val(),owner: $("#owner").val()},
         dataType: "text",  
         cache:false,
         success: 
              function(data){
                alert(data.message);  //as a debugging message.
                //here you update the message list with the data from "data.data"
                //using a loop and append
              }
          });// you have missed this bracket
     return false;
 });
 });

答案 1 :(得分:0)

控制器:

function send_message()
{
    $sk = random_string('alnum',5).time();
    $from= $_SESSION['username1'];
    $owner = $_POST['owner'];
    $desc = $_POST['textbox'];
    $to = $this->Model_items->get_owner_name($owner);
    $from = $this->Model_items->get_owner_name2($username);
    date_default_timezone_set('Asia/Manila');
    $date = date("Y-m-d H:i:s");
    $data =  array('message_from_username'=>$username,'message_to_username'=>$owner,'message_sk'=>$sk,'message_desc'=>$desc,'message_from'=>$from,'message_to'=>$to,'message_date'=>$date,'status'=>1);
    $value = $this->Model_messages->message_owner($data);
    Print_r($value);
    die();

}

使用控制器中的功能

相关问题