листание результатов базы данных с использованием jquery - PullRequest
0 голосов
/ 05 июня 2009

Я ищу информацию о том, насколько сложно будет пролистать ряд результатов из базы данных с помощью jquery. Я уже нашел плагин, но не думаю, что это то, что мне нужно.

У меня есть форма с 8 текстовыми полями. Я хочу заполнить эти 8 текстовых полей первым результатом базы данных, а затем показать подкачку, если есть еще результаты. Если результатов больше, пользователь сможет нажать следующую кнопку, чтобы новые данные были импортированы в текстовые поля.

У кого-нибудь есть предложения?

Ответы [ 3 ]

0 голосов
/ 05 июня 2009

Способ сделать это (или способ, которым я делаю это) - это связать ajax-вызовы со ссылками на нумерацию страниц. Ссылки имеют встроенную ссылку и знают, на какую страницу они ссылаются.

, например

<a class="pager" href="/ajax_pages/get_results.php?page=3"> 3 </a>

Теперь вы можете перехватывать клики по этим ссылкам с помощью функции jquery live

$(function() {
      $('a.pager').live('click',function() {
             var url = $(this).attr('href');
             $('#destination').load(url);
      }
 }

Поскольку вы используете 'live', вам не нужно связывать недавно созданный HTML вручную. И поэтому ваши ссылки будут готовы к работе сразу же.

Тогда все, что вам нужно сделать, это сгенерировать значение смещения на основе запрошенной страницы и лимита (который должен знать ваш бэкэнд-сервис).

Альтернативный метод очень близок, но требует больше работы в javascript. Попросите службу, которую вызывает ваш пейджер, возвращать данные в формате JSON. Ваша функция обратного вызова должна будет затем заполнить вашу страницу этими данными, а затем обновить ссылки на страницы, чтобы они работали правильно.

Это может быть более подходящим решением, чем выдувание всей формы каждый раз, но требует больше работы. Вряд ли это будет заметная разница.

0 голосов
/ 05 июня 2009

Лично, если бы я знал, что у меня никогда не будет больше 5 страниц или около того, я бы вообще отказался от Ajax ... Не то чтобы мне это не нравилось ... Я просто не думаю, что это необходимо в этом случае.

<?php
// Example Database result (say, 2 "pages" worth)...
// We'll pretend the cells in your database match the textarea names...
$results = array(
    [0] => array(
        'textbox1'=>'abc',
        'textbox2'=>'def',
        'textbox3'=>'ghi',
        'textbox4'=>'jkl',
        'textbox5'=>'mno',
        'textbox6'=>'pqr'
        'textbox6'=>'stu'
        'textbox6'=>'vwx'
    ),
    [1] => array(
        'textbox1'=>'cba',
        'textbox2'=>'fed',
        'textbox3'=>'ihg',
        'textbox4'=>'lkj',
        'textbox5'=>'onm',
        'textbox6'=>'rqp'
        'textbox6'=>'uts'
        'textbox6'=>'xwv'
    )
)
$json_results = json_encode($results);
?>

<!-- Generate some jQuery and HTML -->
<script language="javascript">
    var pages = eval('<?=$json_results;?>');
    $(function() {
        $('.page_num').live('click',function() {
            var page = $(this).attr('rel');
            if(pages[page] && pages[page].length > 0) {
                $.each(pages[page],function(key,value) {
                    // assuming your key names are the same as the
                    // names of your textareas
                    $('textarea[name="'+key+'"]').value(value);
                });
            } else {
                alert("Oops, that page doesn't exist for some reason...");
            }
        });
    });
</script>

<?php foreach($results[0] as $key=>$value): ?>
<textarea name="<?=$key?>"><?=$value;?></textarea>
<?php endforeach; ?>

<div id="page_nums">
<?php for($i=1;$i<=sizeof($results)-1;$i++): ?>
<a class="page_num" href="#" rel="<?=$i;?>"><?=$i;?></a>
<?php endfor; ?>
0 голосов
/ 05 июня 2009

Вы не упомянули, какую базовую платформу вы используете. Это ASP.NET MVC? Рубин на рельсах? Поддержка подкачки обычно встроена в базовую платформу.

Если вы хотите сделать вызов AJAX или JSON, jQuery, безусловно, способен сделать это, но то, как будет выглядеть этот вызов, будет зависеть от используемой вами платформы.

Если это Ruby, вы должны найти здесь несколько советов: http://www.sitepoint.com/article/ajax-jquery/

...