轉自:http://spaces.msn.com/blackwoodk ... 2wpZwYtrg!169.entry
最近研究了一下ajax,最后選了xajax作為基本class
參考站點:http://xajax.sourceforge.net
因為基本都是gb2312所以把xajax.inc.php里面的編碼改了一下,不過老實說UTF-8不錯:
$this->xml = "<?xml version="1.0" encoding="GB2312"?>";
重新封裝了一下KaneXajax類,
除此以外基本沒怎么改動。
<?php
require_once(‘Smarty/Smarty.class.php‘);
require_once(‘Xajax/xajax.inc.php‘);
function myFunction($arg)
{
$objResponse = new xajaxResponse();
$objResponse->addAssign("SomeElementId","innerHTML", $newContent);
return $objResponse->getXML();
}
$Kanexajax = new KaneXajax();
$Kanexajax->registerFunction("myFunction");
$Kanexajax->processRequests();
$KaneSMARTY = new KaneSmarty();
$KaneSMARTY->assign(‘xajax_javascript‘, $xajax->getJavascript());
$KaneSMARTY->display(myTEMPLATE);
?>
一個最基本的php就ok了,當然tpl里面<{$xajax_javascript}>要加到<HEAD></HEAD>之間
再說說基本的方法吧:
* addAssign($sTargetId,$sAttribute,$sData)
設置$sTargetId元素的$sAttribute屬性為$sData,常用的有div的innerHTML,input的value什么的。
$objResponse->addAssign("contentDiv","innerHTML","Some Text");
$objResponse->addAssign("checkBox1","checked","true");
* addAppend($sTargetId,$sAttribute,$sData)
追加$sData到$sTargetId元素的$sAttribute屬性上
$objResponse->addAppend("contentDiv","innerHTML","Some Text");
* addPrepend($sTargetId,$sAttribute,$sData)
預制$sTargetId元素的$sAttribute屬性為$sData,老實說,沒在實戰中用過呢,呵呵
$objResponse->addPrepend("contentDiv","innerHTML","Some Text");
* addReplace($sTargetId,$sAttribute,$sSearch,$sData)
替換$sTargetId元素的$sAttribute屬性中的$sSearch為$sData。
$objResponse->addReplace("contentDiv","innerHTML","text","<strong>text</strong>");
* addClear($sTargetId,$sAttribute)
清空$sTargetId元素的$sAttribute屬性
$objResponse->addClear("Input1","value");
* addCreate($sParentId, $sTagname, $sId, $sType)
創建$sParentId元素的一個新的子元素,其name為$sTagname,Id為$sId,類型為$sType
$objResponse->addCreate("form1","input", "pass", "password");
* addRemove($sElementId)
移除$sElementId元素
$objResponse->addRemove("div1");
* addAlert($sMsg)
彈出一個內容為$sMsg的提示框
$objResponse->addAlert("This is some text");
* addScript($sJS)
執行一段javascript
$objResponse->addScript("var txt = prompt(‘get some text‘);");
$objResponse->addScript("window.location=""."demo.php?id=1"."";");
這兩天用PHP+SMARTY+XAJAX寫了一些小東西,感覺上就是調試完全靠感覺,不過
按照DB的debug,Smarty的debug,xajax的debugOn(),的步驟,一步步地測好再往下寫會好很多
因為,smarty已經夠敏感,經常給你一張大白臉,而xajax更加敏感,任何的地方有一點小錯誤,他立刻完蛋,這樣的女人娶回家真是挺可怕的,不過誰讓她支持Smarty呢?
過兩天再把改好的一些代碼貼上來吧,感覺還有的優化
|