Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 16 апр 2024, 17:17

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Проблемма с AJAX
СообщениеДобавлено: 02 авг 2012, 15:09 
Не в сети
Новичок

Зарегистрирован: 03 апр 2012, 15:43
Сообщения: 20
В виде есть токой скрипт
Код:
<script>  
    $(document).ready(function(){ 
         
        $('.scroll-right').click(function(){ 
            $.getJSON('widgets/dzerginsk/ajax', function (data) {
                $("#tab-1").html('');
                $.each(data, function (i, item) {
                    $("#tab-1").append(item.title+'</br>');
                });

            }); 
        }); 
                     
    }); 
</script>

он берет JSON данные из экшена
Код:
public function action_ajax() {
        $tag_id = 12;
        $content_type = 'political_news';
        $all_news = Model::factory('Content')->get_tab_ajax($tag_id, $content_type);
        $this->response->headers('Content-Type', 'application/json; charset=utf-8');
        $this->response->body(json_encode($all_news));
       
    }
вот сам get_tab_ajax:
[code]public function get_tab_ajax($tag_id,$content_type)
    {
           
    $query = DB::select('content.title','content.alias','content.category','content.datetime')
            ->from('content')
            ->or_where_open()
            ->where('category','=',$content_type)
            ->or_where_close()
            ->and_where('datetime','<=',date('Y-m-d H:i:s'))       
            ->join('taglinks')
            ->on('content.id','=','taglinks.con_id')
            ->where('taglinks.tag_id','=',$tag_id)
            ->order_by('datetime', 'DESC')
            ->limit(3)
            ->offset(3)
            ->execute()
            ->as_array();
       
    if($query)
            return $query;
        else
            return array();
    }[/code]

Все это дело используется для прокрутки новостей средствами аякс, чтобы не загружать сразу все т.к. на странице много таких вкладок. Вопрос в следующем: как сделать чтобы offset в запросе к БД каждый раз увеличивался и отображались следующие 3 новости, пытался ввести переменную offset в action_ajax(), но она прикаждом запуске очищается. Кто что думает по этому поводу?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемма с AJAX
СообщениеДобавлено: 02 авг 2012, 15:32 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
Offset должен приходить с каждым ajax-запросом. На клиенте можно, например, нумеровать все новости и при запросе отправлять номер последней, по идее это и будет тот самый offset, либо просто хранить где-нибудь количество подгруженных новостей и отправлять его при запросах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемма с AJAX
СообщениеДобавлено: 02 авг 2012, 15:39 
Не в сети
Новичок

Зарегистрирован: 03 апр 2012, 15:43
Сообщения: 20
а где например можно хранить колличество подгруженных новостей? чтобы аякс запрос мог каждый раз его модифицировать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемма с AJAX
СообщениеДобавлено: 02 авг 2012, 15:47 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
Можно просто в js переменной


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемма с AJAX
СообщениеДобавлено: 02 авг 2012, 15:53 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
Или добавить куда-нибудь атрибут (например к элементу, по клику на который происходит подгрузка новостей) и хранить там, тут уже как удобней будет использовать..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемма с AJAX
СообщениеДобавлено: 02 авг 2012, 16:36 
Не в сети
Новичок

Зарегистрирован: 03 апр 2012, 15:43
Сообщения: 20
вот пытаюсь делать так
Код:
<script>
   
    $(document).ready(function(){ 
    var count = 3;     
        $.('.scroll-right').click(function(){ 
            $.ajax({
                type:"POST",
                url:'widgets/dzerginsk/ajax',
                data: "count",
                succes: function (data) {
                    $("#tab-1").html('');
                    $.each(data, function (i, item) {
                        $("#tab-1").append(item.title+'</br>');
                    });
                }
            }); 
            count = count + 3;         
        });
    });
</script>

почему-то не работает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемма с AJAX
СообщениеДобавлено: 02 авг 2012, 16:39 
Не в сети
Новичок

Зарегистрирован: 03 апр 2012, 15:43
Сообщения: 20
а в экшене беру из пост
Код:
$offset = $_POST['data'];


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемма с AJAX
СообщениеДобавлено: 02 авг 2012, 19:54 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
Код:
 data: "count",

Так не будет работать, count ведь переменная и насчёт формата не уверен, по идее должно быть так:
Код:
data: "count="+count,

или так
Код:
data: {"count": count},

Попробуйте заменить строку и посмотрите что придет в post.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемма с AJAX
СообщениеДобавлено: 03 авг 2012, 11:30 
Не в сети
Новичок

Зарегистрирован: 03 апр 2012, 15:43
Сообщения: 20
Спасибо за ответы, переделал вот так:
Код:
<script>  
    $(document).ready(function(){ 
        var id = 0;
       
        $('.scroll-right').click(function(){
            id = id+1;
            $.getJSON('widgets/dzerginsk/ajax/'+id, function (data) {
                $("#tab-1").html('');
                $.each(data, function (i, item) {
                    $("#tab-1").append('<div class="topnews">'+
                    '<img src="files/images/'+item.category+'/'+item.alias+'.jpg'+'" />'+item.datetime+'</br>'+item.title+'</br>');
                });

            });
           
        });
        $('.scroll-left').click(function(){
            if (id>=1) id = id-1;
            $.getJSON('widgets/dzerginsk/ajax/'+id, function (data) {
                $("#tab-1").html('');
                $.each(data, function (i, item) {
                    $("#tab-1").append('<div class="topnews">'+
                    '<img src="files/images/'+item.category+'/'+item.alias+'.jpg'+'" />'+item.datetime+'</br>'+item.title+'</br>');
                });

            });
           
           
        });
                     
    }); 
</script>

это сам скрипт, он передает id в экшен, и этот id является смещением в offset, которое в модели. Может сильно накручено, но вроде так работает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемма с AJAX
СообщениеДобавлено: 03 авг 2012, 12:53 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
А если какие-то новости будут удалены из середины списка, то последняя айдишка не совпадёт ведь с количеством записей.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group