规则之树

ajax技术在杰奇cms的实现流程,大概原理

在之前制作淡绿色的模板时候,我就已经因为ajax问题卡了很久,后来干脆也放弃了,改为杰奇的分页。某天晚上直接上网查资料,还是恶补ajax,json之类的知识,并且准备运用到最新的模板里面,最近制作的红色模板正好需要无限加载的实现,还好官方给出了代码参考不至于让我折腾太久。当然整个过程遇到了很多的问题,而且到现在,我一些地方的数据循环调用写法还是有问题,需要进一步完善。

主要难点及解决思路:

1.杰奇呈现json形式的数据

这个操作比较简单,我的做法是复制了书库,和排行榜的文件,在解密之后修改模板,但是值得注意的地方在于内容模板的赋值不能调用全局的头部尾部,官方的参考代码如下:

指定一个首页中间内容部分模板,页头和页尾部分用系统默认的theme,例子如下:
$jieqiTset['jieqi_contents_template'] = JIEQI_ROOT_PATH.'/templates/index.html';
指定整页模板,模板本身包含页头页尾部分代码,例子如下:
//$jieqiTset['jieqi_page_template'] = JIEQI_ROOT_PATH.'/templates/index.html';

json形式数据肯定和网页的头尾部无关的,自然要把原来的调用方式改为jieqi_page_template,这样就不会加载头尾部代码。
随后就是数据的调用了,一般这种json数据是直接写在php文件,不会以网页形式出现,但是我测试用网页形式也没问题,直接定义一个新模板,以书库为例,修改模板的地址为新模板,然后在里面加入循环调用,比如我的就是如下,这些代码不是太完善,但是基本没有问题,代码可能会显示错乱,可以看截图。【注意,不要出现换行】

{?set jieqi_blocks_module = "article"?}{?set jieqi_page_rows = "10"?}{{?section name=i loop=$articlerows?}{?if $i['order'] ==1?}"code":0,"message":"获取成功",{?else?}{?if $i['order'] ==""?}"code":999,"message":"没有更多数据了",{?/if?}{?/if?}{?/section?}"data":"{?section name=i loop=$articlerows?}<li><a href='{?$articlerows[i].url_articleinfo?}'><div class='leftImage'><img src='{?$articlerows[i].url_image?}' \/><\/div><div class='rightBlock'><span class='rightBlock_title'>{?$articlerows[i].articlename?}<\/span><span class='rightBlock_name'>{?$articlerows[i].author?} | {?$articlerows[i].sort?}<\/span><span class='rightBlock_con'><span class='con'>{?$articlerows[i].intro|truncate:40?}...<\/span><span class='keyWord'><i class='k1'>{?$articlerows[i].sort|truncate:4:''?}<\/i><\/span><\/span><\/div><\/a><\/li>{?/section?}"}


代码的大概意思如下:

{?set jieqi_blocks_module = "article"?} 申明为小说连载模块
{?set jieqi_page_rows = "10"?} 每页调用十条数据
{?section name=i loop=$articlerows?}{?/section?} 循环调用主体
{?if $i['order'] ==1?}"code":0,"message":"获取成功",{?else?}{?if $i['order'] ==""?}"code":999,"message":"没有更多数据了",{?/if?}  对于是否查询出数据的判断

实际访问的效果如下图,虽然被识别为网页,但是没有影响正常读取:

2.杰奇数据编码的问题

这个问题比较严重,我之前做模板的时候本来都实现了ajax,最后调取的数据是乱码。网上查资料的时候,基本都没有GBK的案例,甚至有人说json只能utf-8,还说什么是环境的限制,那我就真的觉得见鬼了,编码问题又不是大问题,难道json还这么金贵吗。我一开始还真的信了他的邪,以为ajax在杰奇上用不了,后来仔细想想,根本就不难啊。

首先我把jQuery相关文件用DW全部转为gbk编码。

然后我在调用json数据的php文件的头部加上了这样一条代码。

header("Content-Type: text/html; charset=GBK");

我将这一系列全部折腾为gbk编码之后,数据可以正常出现了。

上面就是ajax技术在杰奇cms的实现流程,转载注明来源,我只是简单的给个思路,留给自己或者其它模板开发者以后参考,测试的杰奇程序1.8以上都没问题,1.7没有测试。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »