Zh:Upgrading from xajax 0.2 to xajax 0.5






Zh:Upgrading from xajax 0.2 to xajax 0.5

xajax v0.5 beta 1版推出了!

该页会不断的更新从版本v0.2.x到v0.5的各种内容变化;其中的很多部分在下面已经实现了。

Contents

[edit] 附加

[edit] 延迟事件(delay events)

你现在可以指定自己的延迟事件,或调用独立的'读取中...'函数(附全局延迟事件/函数);使用

xajax.call('functioname',{onRequestDelay:delayFunctionName});

[edit] 插件

xajax现在已经拥有一套插件系统,因此你可以扩展它使其与其它框架如script.aculo.us协同工作。下面是一段插件调用的示例:

xajaxResponse->plugin(‘scriptaculous’)->fade(‘myDiv’);

[edit] Changes

[edit] 请求类型(request type)

请求类型的设置选项已经被去掉,因为大多数情况下使用的是POST方法。另外,POST方法允许在请求过程中发送更多的数据。GET请求方法被用作POST请求失败后的备选方案。

[edit] 响应命令(Response Commands)

xajaxResponse已经被重构,可以用以支持将来可能出现的其它数据传输方法。目前响应命令是以数组方式存储的;数组在响应发送前会被转换为XML。以前的XML是通过字符串连接方式构建为命令添加在响应之后。

[edit] 目录结构(Folder Structure)

xajax目录结构已经更改,使PHP文件和Javascript文件相互独立。所有PHP文件放在xajax_core目录下,所有Javascript文件放在xajax_js目录下。

[edit] 方法重命名(Method Renaming)

请注意:你可以通过new legacyXajax()实例化方法取代new xajax()实例化方法、new legacyXajaxResponse()实例化方法取代new xajaxResponse()实例化方法保留所有以前的方法。


xajax方法

xajax->processRequests()变为xajax->processRequest()

所有布尔值设置方法如xajax->debugOn();and xajax->outputEntitiesOn();变为xajax->setFlag('debug',true)以及xajax->setFlag('outputEntities',true); xajax->setFlags()还可以设置数组值如xajax->setFlags(array('debug'=>true,'outputEntities'=>true));

xajax->registerExternalFunction()方法已经与xajax->registerFunction()整合到一起,因此xajax->registerFunction()函数现在有一个可选的第二参数,如xajax->registerFunction('functionName', 'file.php')


xajaxResponse方法

许多xajaxResponse方法都发生了改变。以前容易混淆的'add'前缀从很多函数中移出;于是乎,xajaxResponse->addScript()变成了 xajaxResponse->script(),xajaxResponse->addAssign()变为xajaxResponse->assign()。将响应与PHP5合到一起就比较有意思了:

$response
 ->alert("Hi!")
 ->assign("myDiv""innerHTML"$stuff)
 ->plugin('script.aculo.us')->highlight("myDiv")
 ->scriptCall('finishEditing'$newID);

xajaxResponse->getXML()不用了;只需返回xajaxResponse对象即可。

[edit] 快速参考

旧代码新代码
 
require_once('xajax.inc.php');require('xajax_core/xajax.inc.php');
 
xajax->debugOn();xajax->setFlag('debug',true);
xajax->debugOff();xajax->setFlag('debug',false);
xajax->statusMessagesOn();xajax->setFlag('statusMessages',true);
xajax->statusMessagesOff();xajax->setFlag('statusMessages',false);
xajax->decodeUTF8InputOn();setFlag('decodeUTF8Input',true)
xajax->registerExternalFunction('function','file.php');xajax->registerFunction('function','file.php');
xajax->processRequests();xajax->processRequest();
 
xajaxResponse->loadXML($response);xajaxResponse->loadCommands($response);
return xajaxResponse->getXML();return xajaxResponse
xajaxResponse->addAssign();xajax->assign()
xajaxResponse->addAlert();xajax->alert()
xajaxResponse->addClear();xajax->clear()
xajaxResponse->addCreateInput();xajax->createInput()
xajaxResponse->addCreate();xajax->create()
xajaxResponse->addRemove();xajax->remove()
xajaxResponse->addScript();xajax->script()
xajaxResponse->addScriptCall();xajax->call()
 
xajax.createInput() xajax.forms.createInput()
xajax.create() xajax.dom.create()
xajax.remove() xajax.dom.remove()
xajax.loadingFunction = function(){}; xajax.callback.global.onRequest= function(){};
xajax.doneLoadingFunction = function(){}; xajax.callback.global.onComplete= function(){};
new functionxajax.callback.global.onFailure = function(args)

{
alert("In global.onFailure...HTTP status code: " + args.request.status);
}