最近match001.com項目做一個發送電子喜帖的功能,發現QQ油箱明信片功能差不多。於是乎構思做成那個樣子。
有幾點需要實現的:
- 背景圖片、結婚相片的加載。
- N多的事件綁定
- 跟相冊數據綁定,選擇相冊列出所有相片,並且相片分頁。所有的都AJAX實現
- 初始化一個DIV用來控制上層圖片位置移動,根據不同背景圖片,初始化不不同的控制DIV。
- 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');
}
(以上代碼只是一個局部,並不完整)