使用jquery分析数据库结果

时间:2009-06-05 04:28:35

标签: jquery pagination

我正在寻找有关使用jquery从数据库中翻阅大量结果有多困难的信息。我已经找到了一个插件,但我认为这不是我需要的。

我有一个包含8个文本框的表单。我想用第一个数据库结果填充这8个文本框,然后如果有更多结果则显示分页。如果有更多结果,那么用户应该能够单击下一个按钮将新数据导入文本框。

有人有任何建议吗?

3 个答案:

答案 0 :(得分:0)

您尚未提及您正在使用的基础平台。它是ASP.NET MVC? Ruby on Rails?分页支持通常内置于底层平台。

如果你想进行AJAX或JSON调用,jQuery肯定能够做到这一点,但是这个调用看起来将取决于你正在使用哪个平台。

如果是Ruby,你应该在这里找到一些指导: http://www.sitepoint.com/article/ajax-jquery/

答案 1 :(得分:0)

执行此操作(或我的方式)的方法是将ajax调用绑定到分页链接。这些链接内置了url,并知道他们所指的页面。

e.g。

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

现在,您可以使用jquery live function

拦截对这些链接的点击
$(function() {
      $('a.pager').live('click',function() {
             var url = $(this).attr('href');
             $('#destination').load(url);
      }
 }

由于您正在使用“live”,因此您无需手动绑定新生成的HTML。因此,您的链接将立即准备就绪。

然后,您所要做的就是根据请求的页面和限制(您的后端服务应该知道)生成偏移值。

替代方法非常接近,但需要在javascript中进行更多工作。让您的寻呼机调用的服务返回json编码数据。然后,您的回调函数必须使用此数据填充您的页面,然后更新您的分页链接,以便它们正常工作。

这可能是比每次吹灭整个表格更加优雅的解决方案,但确实需要更多的工作。它不太可能是明显的差异。

答案 2 :(得分:0)

就个人而言,如果我知道我真的不会超过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; ?>