文档章节

ecshop前台使用ajax分页分析

adbug
 adbug
发布于 2015/06/17 09:31
字数 882
阅读 32
收藏 0

看到网上两种对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 。实现动态局部刷新数据的功能。

本文转载自:http://blog.csdn.net/fgdfgasd/article/details/15169669

共有 人打赏支持
adbug
粉丝 6
博文 176
码字总数 198249
作品 0
成都
私信 提问
ECShop 2.7.2 最新任意用户登陆漏洞

由于最近项目需要, 查看了下商派最新发布的ECShop 2.7.2正式版的源代码, 没想到在看到第二个文件时就发现了一处比较明显, 且低级漏洞。这个漏洞可以让任何人以任何用户身份登录到ECShop前台!...

沱长
2010/05/05
5.6K
5
如何禁用ECSHOP缓存,如何关闭ECSHOP缓存

熟悉ECSHOP的老站长们都知道,ECSHOP是有缓存机制的。 ECSHOP的缓存机制从一定程度上可以减少ECSHOP反复读取数据库的几率,从而一定程度上降低服务器负担,提高访问速度。 但是启用缓存机制,...

Surjur
2015/04/30
0
0
ecshop有自带的支付方式,如何修改成自己的?

ecshop有自带的支付方式,后台安装之后,前台才可以使用。如何不使用ecshop自带的支付方式,完全不使用ecshop的,使用其他的支付,如何实现呢?

huangxiu18
2016/09/07
858
1
ecshop 中 assign_pager 分页这个函数谁用过 请教下

ecshop 中 assign_pager 分页这个函数谁用过 请教下 ecshop 中 assign_pager 分页这个函数谁用过 请教下 assign_pager 下加个条件 现在情况是 赋值有问题 不是不出现 就是把原来的url 取代了...

hongye
2012/09/29
911
0
重构ECShop中的Javascript(一)

ECShop一直有一个很大的问题,就是其自带的JS脚本和jQuery为主的不少使用非常多的JS框架冲突,这个冲突导致了我们在制作ECShop模板的时候,很多优秀的界面效果无法实现。可以说是ECShop最让人...

icebird
2012/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
14
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
昨天
35
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部