Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Проблемма с AJAX
http://forum.kohanaframework.su/viewtopic.php?f=32&t=275
Страница 1 из 2

Автор:  akul [ 02 авг 2012, 15:09 ]
Заголовок сообщения:  Проблемма с AJAX

В виде есть токой скрипт
Код:
<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(), но она прикаждом запуске очищается. Кто что думает по этому поводу?

Автор:  qed [ 02 авг 2012, 15:32 ]
Заголовок сообщения:  Re: Проблемма с AJAX

Offset должен приходить с каждым ajax-запросом. На клиенте можно, например, нумеровать все новости и при запросе отправлять номер последней, по идее это и будет тот самый offset, либо просто хранить где-нибудь количество подгруженных новостей и отправлять его при запросах.

Автор:  akul [ 02 авг 2012, 15:39 ]
Заголовок сообщения:  Re: Проблемма с AJAX

а где например можно хранить колличество подгруженных новостей? чтобы аякс запрос мог каждый раз его модифицировать?

Автор:  qed [ 02 авг 2012, 15:47 ]
Заголовок сообщения:  Re: Проблемма с AJAX

Можно просто в js переменной

Автор:  qed [ 02 авг 2012, 15:53 ]
Заголовок сообщения:  Re: Проблемма с AJAX

Или добавить куда-нибудь атрибут (например к элементу, по клику на который происходит подгрузка новостей) и хранить там, тут уже как удобней будет использовать..

Автор:  akul [ 02 авг 2012, 16:36 ]
Заголовок сообщения:  Re: Проблемма с AJAX

вот пытаюсь делать так
Код:
<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>

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

Автор:  akul [ 02 авг 2012, 16:39 ]
Заголовок сообщения:  Re: Проблемма с AJAX

а в экшене беру из пост
Код:
$offset = $_POST['data'];

Автор:  qed [ 02 авг 2012, 19:54 ]
Заголовок сообщения:  Re: Проблемма с AJAX

Код:
 data: "count",

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

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

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

Автор:  akul [ 03 авг 2012, 11:30 ]
Заголовок сообщения:  Re: Проблемма с AJAX

Спасибо за ответы, переделал вот так:
Код:
<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, которое в модели. Может сильно накручено, но вроде так работает

Автор:  qed [ 03 авг 2012, 12:53 ]
Заголовок сообщения:  Re: Проблемма с AJAX

А если какие-то новости будут удалены из середины списка, то последняя айдишка не совпадёт ведь с количеством записей.

Страница 1 из 2 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/