Codeigniter JQuery AJAX выберите с анимацией скольжения - PullRequest
0 голосов
/ 19 марта 2012

Во-первых, извините, я действительно большой новичок, я действительно чего-то не понимаю.

Я создаю небольшой кахт из моих пользователей, и вставка в порядке.

Я бы хотел, чтобы, когда я вставлял свое сообщение в чат, после этого вставленное сообщение скользило вниз, и я немного застревал с ним.

мой JQuery

$('#chat_submit').on('click', function(e){
            e.preventDefault();
            var res = {
                'msg' : $('#chat_msg').val(),
            }

            $.ajax({
                type: 'POST',
                url: '<?php echo base_url(); ?>main/send_chat',
                data: res,
                dataType: 'json',
                success: function(data, html){
                    $('#chat_msg').removeAttr('value');

                }   
            });
            return false;
        });

HTML и PHP

<div id="content">
    <h2>Chat</h2>
            <div id="chatbox">
            <?php foreach ($chat as $ch): ?>
                <?php 
                    echo '
                        <div class="chat_post">
                            <span class="chat_time">'.date('H:i', strtotime($ch->added)).'</span>
                            <a href="'.base_url().'profile/user/'.$ch->uid.'" class="chat_name">'.$ch->first_name. " " .$ch->last_name.': </a>
                            <span class="chat_msg">'.$ch->msg.'</span>
                        </div>
                    ';
                ?>
            <?php endforeach; ?>
            </div>
            <?php echo form_open(base_url() . "main/send_chat"); ?> 
        <div id="feed_wrapp">   
            <input type="text" name="msg"  id="chat_msg">
            <input type="submit" value="Küldés" class="submit" id="chat_submit">    
        </div>
    <?php echo form_close(); ?> 
</div>

Я пробовал множество способов, но я совершенно не в курсе, может, кто-нибудь подскажет, что мне не хватает?

Отправить функцию чата в моем контроллере

function send_chat() 
    {

        $this->load->model('user/chat_model');  
        if($this->input->is_ajax_request()) 
        {
            $this->chat_model->chat_insert();   
        }   
        //redirect(base_url());
    }

и вставка в моей модели

function chat_insert()
    {
        $chat = array(
            'uid' => $this->session->userdata('uid'),
            'msg' => $this->input->post('msg')
        );

        $this->db->insert('pf_chat_post', $chat);
    }

1 Ответ

1 голос
/ 19 марта 2012

сначала измените ваш контроллер CI и функции модели следующим образом:

function send_chat()
{
$succeed = false;
$this->load->model('user/chat_model');
if ($this->input->is_ajax_request()) {
    $succeeded = $this->chat_model->chat_insert();
}
if ($succeeded) {
    echo '<div class="chat_post">
                        <span class="chat_time">' . date('H:i') . '</span>
                        <a href="' . base_url() . 'profile/user/' . $this->session->userdata('uid') . '" class="chat_name">' . $this->input->post('first_name') . " " . $this->input->post('last_name') . ': </a>
                        <span class="chat_msg">' . $this->input->post('msg') . '</span>
                    </div>';
}
}

function chat_insert()
{
$chat = array(
    'uid' => $this->session->userdata('uid'),
    'msg' => $this->input->post('msg')
);
$this->db->insert('pf_chat_post', $chat);
return ($this->db->affected_rows() > 0);
}

и в вашей форме добавьте два скрытых ввода с именами "first_name" и "last_name"

 <input type="hidden" name="first_name" value="database value" />
 <input type="hidden" name="last_name"  value="database value" />

, а затем вваша функция успеха в вызове $ .ajax добавьте:

$("#chatbox").append(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...