博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ecshop前台使用ajax分页分析
阅读量:5878 次
发布时间:2019-06-19

本文共 2730 字,大约阅读时间需要 9 分钟。

hot3.png

看到网上两种对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)该函数就是用来调用某商品购买记录的。

     看到分页函数中,存在翻页函数,采用的是js方式.

     $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分页。

2.
以购买记录为例,在模板文件里
<!-- #BeginLibraryItem "/library/bought_note_guide.lbi" -->
{insert_scripts files='transport.js,utils.js'}
<div id="ECS_BOUGHT">{* ECSHOP 提醒您:动态载入bought_notes.lbi,显示当前商品的购买记录 *}{insert name='bought_notes' id=$id}</div>
<!-- #EndLibraryItem -->
bought_note_guide.lbi 这个文件用来显示ecshop默认的购买记录,在商品详情页会自动加载这个文件,这个文件再通过 {insert name=’bought_notes’ id=$id} 来实现。

这句话是说调用了ecshop的insert 方法,这个方法在include/lib_insert.php 文件里,文件中找到函数

function insert_bought_notes($arr) 这个就是调用商品购买记录的。

其中参数 $arr 是个数组,有两个值,如
array(2) { ["name"]=> string(12) “bought_notes” ["id"]=> int(8) } id就是商品的id。
函数中可以看到,商品购买记录的分页样式,翻页采用了js方式
$pager['page_first']   = “javascript:gotoBuyPage(1,$arr[id])”;
    $pager['page_prev']    = $page > 1 ? “javascript:gotoBuyPage(” .($page-1). “,$arr[id])” : ‘javascript:;’;
这个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请求,发送到商品详情页面,将结果显示在模板的ECS_BOUGHT的id中, 默认会显示在insert_bought_notes函数中限制的数据条数,当用ajax翻页时,再通过goods.php页面中
‘商品购买记录ajax处理’
if (!empty($_REQUEST['act']) && $_REQUEST['act'] == ‘gotopage’){}
这块内容再次调用gotoBuyPage 。实现动态局部刷新数据的功能。

转载于:https://my.oschina.net/u/1038053/blog/467640

你可能感兴趣的文章
memcached 分布式聚类算法
查看>>
禁止body滚动允许div滚动防微信露底
查看>>
Xtreme8.0 - Kabloom dp
查看>>
jquery css3问卷答题卡翻页动画效果
查看>>
MDK5.00中*** error 65: access violation at 0xFFFFFFFC : no 'write' permission的一种解决方法
查看>>
Android 集成支付宝支付详解
查看>>
SQL分布式查询、跨数据库查询
查看>>
C#------连接SQLServer和MySQL字符串
查看>>
Arcgis Licensemanager 不能启动的原因之一(转载)
查看>>
(原)Android在子线程用handler发送的消息,主线程是怎么loop到的?
查看>>
$digest already in progress 解决办法——续
查看>>
虚拟机 centos设置代理上网
查看>>
Struts2中Date日期转换的问题
查看>>
mysql 数据类型
查看>>
Ubuntu 设置当前用户sudo免密码
查看>>
设置tomcat远程debug
查看>>
android 电池(一):锂电池基本原理篇【转】
查看>>
Total Command 常用快捷键
查看>>
ionic 调用手机的打电话功能
查看>>
怎么使用阿里云直播服务应用到现在主流直播平台中
查看>>