ecshop的搜索其实是功能十分强大的,但是ecshop搜索功能前台和后台还不大一样,前台主要是通过get方式,提交的url进行分页,而在ecshop的后台,则是接受表单的搜索条件,然后通过js发布到ajax.最后又通过ecshop的ajax将结果返回.然后在显示最后的搜索结果.

我们来举个例子,具体分析下ecshop后台通过ajax方式来进行搜索.

比如我们通过ecshop后台的ajax方式来搜索退换货订单

1:必须在htm中增增加以下搜索框,订单号 <input type="text" name="order_sn" size="15" />

2:html中的ajax可以写成以下格式

listTable.filter['order_sn'] = Utils.trim(document.forms['searchForm'].elements['order_sn'].value);
       listTable.filter['page'] = 1;

listTable.loadList();

我们可以看到以下,就是通过listTable.loadList();来触发ajax的。

3:我们再看php调用。

$result = get_filter();

if ($result === false)
    {

如果返回结果为空,那么就进行ajax结果筛选

$filter['invoice_no']   = empty($_REQUEST['invoice_no']) ? '' : trim($_REQUEST['invoice_no']);
        if ($_REQUEST['is_ajax'] == 1)
        {
            $filter['order_sn'] = json_str_iconv($filter['order_sn']);
        }
        $filter['sort_by']    = empty($_REQUEST['sort_by']) ? 'cid' : trim($_REQUEST['sort_by']);
        $filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);

$sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('change') .
               " WHERE 1 " . $where;
        $filter['record_count'] = $GLOBALS['db']->getOne($sql);

$filter = page_and_size($filter);

/* 获活动数据 */
        $sql = "SELECT * ".
               " FROM " . $GLOBALS['ecs']->table('change') .
               " WHERE 1 " . $where .
               " ORDER by $filter[sort_by] $filter[sort_order] LIMIT ". $filter['start'] .", " . $filter['page_size'];

$filter['keywords'] = stripslashes($filter['keywords']);
        set_filter($filter, $sql);

}else{

$sql    = $result['sql'];
        $filter = $result['filter'];

}

4:最后将查询结果返回

$arr = array('res' => $row, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);

return $arr;

我们在来分析下,res是返回的所有数据,filter是过滤检索条件,page_count是分页数量,record_count表示查询的记录总数.

通过以上封装,我们可以顺利的在ecshop后台使用ajax检索数据

ecshop后台通过ajax搜索原理的更多相关文章

  1. Ajax工作原理

    在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...

  2. 关于Ajax工作原理

    1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...

  3. Ajax工作原理(转)

    1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...

  4. 【转】ecshop后台语言项执行漏洞详解

    该漏洞需要能登录ecshop后台权限,简单修改下语言项目,即可在网站植入木马后门. 以下是详细分析 1.登陆到ecshop台后,选择模板管理,语言项编辑,搜索用户信息 为什么要搜索用户 该漏洞需要能登 ...

  5. (转)Ajax的原理和应用

    1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...

  6. aJax学习之Ajax工作原理

    转自:http://www.cnblogs.com/mingmingruyuedlut/archive/2011/10/18/2216553.html 在写这篇文章之前,曾经写过一篇关于AJAX技术的 ...

  7. 【ecshop后台详解】系统设置-商店设置

    商店设置是我们ecshop新用户第一步先要设置的地方,因为里面相当于网站的基础.包括公司名称,电话,地址,tittle等重要的信息都是这里修改,如果这里没有修改的话,如果有访客来到你网站可能以为走错了 ...

  8. ajax工作原理(转)

    在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...

  9. js中Ajax工作原理(转)

    在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...

随机推荐

  1. 解决:AppMsg - Warning: calling DestroyWindow in CWnd::~CWnd; OnDestroy or PostNcDestroy in derived class will not be called

    类似的还有:AppMsg - Warning: Destroying non-NULL m_pMainWnd(这是因为你既没有自己delete,也没有调用DestroyWindow) 首先解决第一个, ...

  2. fpm来制作rpm包

    转自 http://blog.halfss.com/blog/2013/02/26/fpmbao-guan-li/ 另查看 http://my.oschina.net/lxcong/blog/1438 ...

  3. python password输入

    1.linux下用getpass,没有星号提示,符合linux风格 from getpass import getpasspwd = getpass('Enter the password: ') 2 ...

  4. asmdisk opened & asmdisk cached

    ASMDISK OPENED - Disk is present in the storage system and is being accessed by Automatic Storage Ma ...

  5. NSCoding归档

    大家都知道ios中数据持久化的方式有plist sqlite coredata nscoding 而nscoding不需要关心模型属性有多少个,是什么类型,不需要定义归档文件的规则. 下面给个类大家用 ...

  6. java一般要点

    1.String是引用类型. 2.char, short, byte在进行运算的时候会自动转换成int类型数据., 3.数据A 异或同一个数两次,得到的还是A 4.java的for循环,可以在前面加一 ...

  7. ansible自动化运维工具的安装与使用

    运行环境 centOS6.6 ansible ansible的功能还是比较多的,博主只用它在集群上进行批量部署软件和维护的功能,其他不多做研究,有需要的话这篇文章会慢慢补充. ansible特点 轻量 ...

  8. C# 实现 单例模式

    http://blog.sina.com.cn/s/blog_75247c770100yxpb.html

  9. 关于mybatis 在C#.Net中批量增,删,改

    发现很久没有更新空间里的日志了,有时候实在忙没有时间记录,有时候又觉得自己整理的不够清晰,还是缓缓在记录吧. 下面直接进入正题 对于急需方法的阅读者  可以直接转至代码以下忽略 对于数据库进行操作的类 ...

  10. SQL—— 事务

    SQL 事务: 1.  定义: 事务是作为单个逻辑单元执行的一系列操作. 多个操作作为一个整体向系统提交,要么执行.要么都不执行,事务是一个不可分割的工作逻辑单元.这特别适用于多用户同时操作的数据通信 ...