UCHOME的AJAX分享

来源:互联网 发布:python jsonrpc 教程 编辑:程序博客网 时间:2024/05/16 11:43

最近match001.com项目做一个发送电子喜帖的功能,发现QQ油箱明信片功能差不多。于是乎构思做成那个样子。

有几点需要实现的:

  1. 背景图片、结婚相片的加载。
  2. N多的事件绑定
  3. 跟相册数据绑定,选择相册列出所有相片,并且相片分页。所有的都AJAX实现
  4. 初始化一个DIV用来控制上层图片位置移动,根据不同背景图片,初始化不不同的控制DIV。
  5. JS收集背景图片与相片的相关信息以及他们的位置数据,AJAX到后台处理。根据不同的方式处理,比如 view预览,保存发送等等。

这里针对第三点说说,AJAX得到用户相册数据。

   这里需要用到AJAX和数据分页,UCHOME里有两个非常棒的函数。ajaxget()和muti()。

  ajaxget(url, showid, waitid);参数url为请求路径(必选参数),showid为AJAX请求后返回内容的显示ID(必选参数),waitid为等待请求时候显示loading...的ID(可选,没这个参数的话默认将showid作为waitid)。

uchome的使用AJAX时候有一个注意地方,刚不了解朋友可能尝试使用如下JS代码处理AJAX:

   var x = new('XML', '');

   x.get(url, function(s){

          //some code;

   });

  处理返回一个XML或者HTML格式数据,echo 出来后,再用自己用JS控制显示数据。这里要说的是UCHOME经常会碰到一个XML错误的位置。。什么的错误信息,之前我也是这样处理,搞了好久,后来Google搜一把,原来不能简单后台echo输出。后来想到UCHOME李的template函数,于是乎做一个模板,数据PHP后台得到后不做任何处理,跟其他页面一样,存于变量里,在模板里调用就是。至于分页,也一样,UCHOME里multi函数返回的就是一个分页链接。也在模板里处理显示。而前段JS只需要这样:

   ajaxget(url, showid);

具体PHP代码如下:

$albumid = ($_GET[albumid]) ? $_GET['albumid'] : '';
  if($albumid == '') exit('error');
  
  $perpage = 8; //每页要显示的条数
  $page = empty($_GET['page']) ? 1 : intval($_GET['page']);
  if($page<1) $page=1;
  $start = ($page-1)*$perpage;
  ckstart($start, $perpage);
  $wheresql = " albumid='$albumid' AND uid='$space[uid]'";
  $count = $_SGLOBAL['db']->result($_SGLOBAL['db']->query("SELECT COUNT(*) FROM ".tname('pic')." WHERE $wheresql"),0);
  $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('pic')." where $wheresql limit $start,$perpage");
  while ($row = $_SGLOBAL['db']->fetch_array($query)){
     $pics[] = $row['filepath'];
  }
  $multi = multi($count, $perpage, $page, "wedding.php?do=xitie&action=ajax&m=loadimg&uid=$space[uid]&albumid=$albumid", 'Imgs', 'Link');
  $mod = 'creatpic';
  include_once template('space_xitie_ajax');

 

模板代码如下:
 <!--{if $pics}-->
  <ul id="Pics">
  <!--{loop $pics $value}-->
  <li onclick="x.setImg(this)"><img src="attachment/$value" width="75" height="45"/></li>
  <!--{/loop}-->
  </ul>
  <div class="page" id="Link">$multi</div>
 <!--{else}--> 
  <ul id="Pics">
   <li>您相册都还没有呢,赶快去创建相册上传照片吧!</li>
  </ul>
  <div class="page" id="Link">$multi</div>
 <!--{/if}-->

JS代码如下:

var albumid = $("album").value;
    if(albumid!=''){
     var url = './wedding.php?do=xitie&action=ajax&m=loadimg&albumid='+albumid+'&inajax=1';
     ajaxget(url, 'Imgs');
    }

 

(以上代码只是一个局部,并不完整)