UCHOME的AJAX分享

最近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');
    }

 

(以上代碼只是一個局部,並不完整)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章