看到网上两种对AJAX的分析,有两种,摘抄下来:
1.使用和开发ecshop很长时间了。作为研究ecshop的一员,应该知道ecshop前台数据调用。到了局部的时候,有很多数据,但是数据量大的时候,我们必须分页。当然局部的分页,采用跳转方式肯定不行。于是ecshop前台数据的分页方式一般都是采用ecshop的ajax分页。
我们来说个例子,比如ecshop的购买记录分页,那么就是采用的ecshop的ajax来分页的。首先我们看到bought_note_guide.lbi,这个就是来显示ecshop默认的购买记录的。当我们进入ecshop商品详细页面的时候,我们看到ecshop的程序会自动的加载bought_note_guide.lbi.,我们找到该代码。他是通过以下代码来实现的。{insert name='bought_notes' id=$id}。我们看到他调用了ecshop的insert方法。该方法位置与includes/lib_insert.PHP文件。既然是ecshop通过ajax分页。那么在数据显示的内容区域。必须指定一个id来接受ajax数据了。在该文件里面。就使用了ECS_BOUGHT方法。ajax的分页函数function insert_bought_notes($arr)该函数就是用来调用某商品购买记录的。
$pager['page_first'] = "javascript:gotoBuyPage(1,$arr[id])";
$pager['page_prev'] = $page > 1 ? "javascript:gotoBuyPage(" .($page-1). ",$arr[id])" : 'javascript:;';
$pager['page_next'] = $page < $page_count ? 'javascript:gotoBuyPage(' .($page + 1) . ",$arr[id])" : 'javascript:;';
$pager['page_last'] = $page < $page_count ? 'javascript:gotoBuyPage(' .$page_count. ",$arr[id])" : 'javascript:;';
我们来分析ajax的js,他位置于js/common.js
function gotoBuyPage(page,id)
{
Ajax.call('goods.PHP?act=gotopage','page=' + page + '&id=' + id,gotoBuyPageResponse,'GET','JSON');
}
function gotoBuyPageResponse(result)
{
document.getElementById("ECS_BOUGHT").innerHTML = result.result;
}
我们可以看到,这个js就是通过请求,发送到商品详细页面,然后通过商品详细页面的PHP,将数据处理结果用ecshop ajax方式返回到模板中,将结果显示在商品详细页面模板的ECS_BOUGHT的id中。从而达到了动态局部刷新数据功能的作用。ecshop也正式通过这个方式来做到前台的ajax分页。
{insert_scripts files='transport.js,utils.js'}
<div id="ECS_BOUGHT">{* ECSHOP 提醒您:动态载入bought_notes.lbi,显示当前商品的购买记录 *}{insert name='bought_notes' id=$id}</div>
<!-- #EndLibraryItem -->
这句话是说调用了ecshop的insert 方法,这个方法在include/lib_insert.PHP 文件里,文件中找到函数
function insert_bought_notes($arr) 这个就是调用商品购买记录的。
{
Ajax.call('goods.PHP?act=gotopage','JSON');
}
function gotoBuyPageResponse(result)
{
document.getElementById("ECS_BOUGHT").innerHTML = result.result;
}