我正在寻找有关使用jquery从数据库中翻阅大量结果有多困难的信息。我已经找到了一个插件,但我认为这不是我需要的。
我有一个包含8个文本框的表单。我想用第一个数据库结果填充这8个文本框,然后如果有更多结果则显示分页。如果有更多结果,那么用户应该能够单击下一个按钮将新数据导入文本框。
有人有任何建议吗?
答案 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; ?>