Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ajax чат 
:(
    Опции темы
systemIV
Дата 7.7.2011, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 28.3.2011

Репутация: -1
Всего: -1



Помогите с аяксом=))

Проблема такая. Нужно дёргать скрипт каждые N секунд. 

Вот код яваскрпта:
Код

<script type="text/javascript">
            $(document).ready(function(){
                $('#text-message').focus();
                setInterval("last()", 2000);
                $('.left-content').scrollTop($('.left-content').get(0).scrollHeight);
                $('#message-form').submit(function(){
                    $.post('chat/addMessage', {
                        text_message: $('#text-message').val()
                    }, last());
                    $('#text-message').focus();
                    $('#text-message').val('');
                    $('.left-content').scrollTop($('.left-content').get(0).scrollHeight);
                    return false;
                });
            });
            
            var process = false;
            var lastmessage;
            
            function last(){
                if(!process){
                    process = true;
                    $.post('chat/lastMessage', {
                        id_message: lastmessage
                    }, function(data){
                        lastmessage = data.last.id_message;
                        alert(data.last.id_message);
                    }, 'json');
                    process = false;
                }
            }
        </script>


Вот контроллер который отдаёт json
Код

<?php
    class ChatController extends CController{
        public function actionIndex(){
           $criteria = new CDbCriteria(array(
                'order' => 'id_message DESC',
                'limit' => '50',
            ));
            
            $model = Chat::model()->findAll($criteria);
            $model = array_reverse($model);
            
            $this->render('index', array(
                'model' => $model,
            ));
        }
        
        public function actionAddMessage(){
            $model = new Chat;
            $model->text_message = $_POST['text_message'];
            $model->save();
        }
        
        public function actionLastMessage(){
         if(isset($_POST['id_message'])){
             $criteria = new CDbCriteria(array(
                 'condition' => 'id_message > :id_message',
                    'order' => 'id_message DESC',
                    'limit' => '50',
                    'params' => array(':id_message' => $_POST['id_message']),
                ));
            }else{
                $criteria = new CDbCriteria(array(
                    'order' => 'id_message DESC',
                    'limit' => '50',
                ));
            }
            
            $model = Chat::model()->findAll($criteria);
            $model = array_reverse($model);
            $last = end($model);
            
            echo json_encode(array(
                'model' => $model, 
                'last' => $last,
            ));
        }
    }


Данные почему о не ловятся=)) Что я не так делаю?)
PM ICQ Skype   Вверх
MoLeX
Дата 7.7.2011, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



что отправляется на сервер, какой ответ получаешь?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
NFL
Дата 7.7.2011, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Код

<script type="text/javascript">
            $(document).ready(function(){
                $('#text-message').focus();
                setInterval("last()", 2000);
                $('.left-content').scrollTop($('.left-content').get(0).scrollHeight);
                $('#message-form').submit(function(){
                    $.post('chat/addMessage', {
                        text_message: $('#text-message').val()
                    }, last());
                    $('#text-message').focus();
                    $('#text-message').val('');
                    $('.left-content').scrollTop($('.left-content').get(0).scrollHeight);
                    return false;
                });
            });
            
            var process = false;
            var lastmessage;
            
            function last(){
                if(!process){
                    process = true;
                    $.post('chat/lastMessage', {
                        id_message: lastmessage
                    }, function(data){
                        lastmessage = data.last.id_message;
                        alert(data.last.id_message);
                    }, 'json');
                    process = false;
                }
            }
        </script>

Я бы setInterval вынес нафиг из функций...
Сам недавно закончил чат, тоже на jquery+php, я писал бы как то так:

Код

<script type="text/javascript">
            $(document).ready(function(){
                $('#text-message').focus();
                
                $('.left-content').scrollTop($('.left-content').get(0).scrollHeight);
                $('#message-form').submit(function(){
                    $.post('chat/addMessage', {
                        text_message: $('#text-message').val()
                    }, last());
                    $('#text-message').focus();
                    $('#text-message').val('');
                    $('.left-content').scrollTop($('.left-content').get(0).scrollHeight);
                    return false;
                });
            });
            
            var process = false;
            var lastmessage;
            
            function last(){
                if(!process){
                    process = true;
                    $.post('chat/lastMessage', {
                        id_message: lastmessage
                    }, function(data){
                        lastmessage = data.last.id_message;
                        alert(data.last.id_message);
                    }, 'json');
                    process = false;
                }
            }
            intrvl = setInterval("last()", 2000);
        </script>

PM MAIL   Вверх
Absinthe
Дата 8.7.2011, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



На будущее: в чатах используются свои демоны, иначе нагрузка будет такая, что сервер не осилит.
PM MAIL   Вверх
Guedda
Дата 8.7.2011, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Вопрос немного не в тему  smile 
А кто-то пользуется еще чатами?


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
NFL
Дата 8.7.2011, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Absinthe, это естественно, но если чат не высокопосещаемый, то не особая там и нагрузка на сервера
PM MAIL   Вверх
Absinthe
Дата 8.7.2011, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Цитата

А кто-то пользуется еще чатами?
 У меня на сейте есть, периодически там общение.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.