Surance Center

xxpyeippx

xxp,I love u

2008年8月16日 #

翻译:xoops搜索功能的使用

原文地址:http://www.xoops.org/modules/mediawiki/index.php?title=Dev:search_function&curid=355&oldid=1067
注意:我是一个新的xoops开发者,请时刻留意这一点
记录一下我开发myguestBook模块时候学到的搜索功能
1. 第一,向xoops_version.php文件加入以下的代码

 Search $modversion['hasSearch'] = 1;
 $modversion['search']['file'] = "include/search.inc.php";
 $modversion['search']['func'] = "guestbook_search";
2.第二,按照以上的设定添加文件,并写代码:

 

=====

翻译者:Surance Yin  (Suranceyin@yahoo.com.cn)

©:http://www.fltek.com.cn

=====

 

 

 

Code

posted @ 2008-08-16 22:20 xxp 阅读(17) | 评论 (0)编辑

2008年5月25日 #

发布新软件:史上最轻量级的ORM--EasyDBOperation

标题:最轻量级的ORM(含实例)
下载地址:http://www.cnblogs.com/Files/xxpyeippx/EasyDBOperationV3.0.rar
作者介绍:
Surance Yin
个人主页: www.fltek.com.cn
Cnblogs: www.cnblogs.com/xxpyieppx/
邮箱:suranceyin@yahoo.com.cn


基本信息:
类型:类库
协议:GPL
环境:.net framework 2.0
数据库:Sqlserver 2000/2005
最好配合CodeSurance一起使用


特性:
1.最轻量级的ORM。
2.实现了字符串过滤
3.支持分页(不需要存储过程)


升级记录(2.0-3.0)
增加了字符串过滤
增机阿拉分页支持

 

额外说明:
1.最好结合aspnetPager
2.ConsoleApplicationTest里面包含了使用范例


到底有多简单:
p.Add();
p.Edit();
manager3.Delete();
ProductInfo info = (ProductInfo)manager2.GetOne((object)id);


操作过程:
1.生成实体类(可以使用CodeSurance来生成)
2.继承CommonOperation,建立对操作类。(主要是要指定表名)
3.在客户端调用操作类即可。

posted @ 2008-05-25 20:27 xxp 阅读(753) | 评论 (16)编辑

2008年4月19日 #

XOOPS模块开发快速入门中文翻译--索引

 

XOOPS模块开发快速入门中文翻译(十) (4-19 10:17)

XOOPS模块开发快速入门中文翻译(九) (4-19 10:10)

XOOPS模块开发快速入门中文翻译(八) (4-19 09:37)

XOOPS模块开发快速入门中文翻译(七)(4-18 18:42)

XOOPS模块开发快速入门中文翻译(六) (4-17 22:40)

XOOPS模块开发快速入门中文翻译(五) (4-17 21:43)

XOOPS模块开发快速入门中文翻译(四) (4-17 21:37)

XOOPS模块开发快速入门中文翻译(三) (4-17 21:17)

XOOPS模块开发快速入门中文翻译(二) (4-17 21:06)

XOOPS模块开发快速入门中文翻译(一) (4-17 20:33)

posted @ 2008-04-19 10:20 xxp 阅读(276) | 评论 (0)编辑

XOOPS模块开发快速入门中文翻译(十)

  由于这两天一直研究XOOPS的模块,所以找到了这篇很好的模块开发快速入门。
看了以后,就兴致勃勃的来开发模块了,可是开发的过程中遇到一些问题。
应该是我看的太快了,要学而时习之啊。因此翻译在这里。
==============
作者:Surance Yin
邮箱:Suranceyin@yahoo.com.cn
主页:http://www.fltek.com.cn
=================

   

第八章――数据库操作和类

CRUD 增删改查
数据库操作有4个基本功能,分别是: Create, Read, Update, Delete; 缩写为 CRUD. 之前我们演示了增加和读取,现在我们来演示一下.

Create 增加

$query="Insert into ".$xoopsDB->prefix("tutorial_myform")." (name, address, telephone, email) values ('$name', '$address', '$tel', '$email' )";

$res=$xoopsDB->query($query);

if(!$res){

echo"error: $query";

}

Read 读取

$query=$xoopsDB->query(' SELECT * FROM '.$xoopsDB->prefix('tutorial_myform')" WHERE id='$myid' ");

$myrow=$xoopsDB->fetchArray($query);

$name=$myrow['name'];

$ad

posted @ 2008-04-19 10:17 xxp 阅读(135) | 评论 (2)编辑

XOOPS模块开发快速入门中文翻译(九)

    由于这两天一直研究XOOPS的模块,所以找到了这篇很好的模块开发快速入门。
看了以后,就兴致勃勃的来开发模块了,可是开发的过程中遇到一些问题。
应该是我看的太快了,要学而时习之啊。因此翻译在这里。
==============
作者:Surance Yin
邮箱:Suranceyin@yahoo.com.cn
主页:http://www.fltek.com.cn
=================

第四章――xoops区块

Part 1 Building a simple module
Part 2 - using Smarty templates in a module
Part 3 - Building an AJAX module

Xoops中,区块是一个非常重要的概念, 不过开发区块并不是很容易,尤其是options,所以我写了这个教程。

下载第三章已经完成的模块


Completed Module from part 3

一个xoops区块包含2部分:
1- 一个php 函数,用来控制区块内容
2- 一个smarty模板,用来控制区块的显示.
以下是 xoops_version.php 中的定义,我们从这里讲起

第一步- 设置 xoops_version.php
打开 tutorial/xoops_version.php. 在?>之前输入

// Blocks
$modversion['blocks'][1]['file'] = "tutorial_block.php";
$modversion['blocks'][1]['name'] = 'Block for Tutorial';
$modversion['blocks'][1]['description'] = 'This is a Block for the tutorial module';
$modversion['blocks'][1]['show_func'] = "tut_blockList";
$modversion['blocks'][1]['template'] = 'tutorial_block.html';

$modversion['blocks'][1]['file'] = "tutorial_block.php";第一行告诉xoops 那个文件来控制区块内容. 1个文件可以有很多个函数。我习惯把所有的函数都放在同一个文件里面,除非函数太庞大了。这样的话,可以很方便的通过文件来找函数。
$modversion['blocks'][1]['name'] = 'Block for Tutorial';这里是区块的名称。最好采用语言文件来定义这些东西,不过为了简单起见,我直接写在这里了。
$modversion['blocks'][1]['description'] = 'This is a Block for the tutorial module';非常容易明白,这里是区块的描述。会显示在区块管理界面的。
$modversion['blocks'][1]['show_func'] = "tut_blockList";这里是用来控制区块的内容的函数名称。我的经验是,尽量在函数名称前面,加上区块名称前缀,这样不会和xoops自带的函数混淆。我以前出现过这样的问题,你也要提起注意哦.
$modversion['blocks'][1]['template'] = 'tutorial_block.html';这里是区块用到的 smarty 模板。


小贴士
当创建一个模块的时候, xoops_version.php中的数字都是这样的:

// Templates
$modversion['templates'][1]['file'] = 'tut_form.html';
$modversion['templates'][1]['description'] = '';
$modversion['templates'][2]['file'] = 'tut_client_list.html';
$modversion['templates'][2]['description'] = '';
$modversion['templates'][3]['file'] = 'tut_main.html';
$modversion['templates'][3]['description'] = '';

如果只有两三个模板,数字的控制还相对容易,但是如果有40多个的时候,控制数字就成了一个非常繁琐的工作。怎么解决这个问题呢?很简单,使用一个计数变量。

// Templates
$i=1;
$modversion['templates'][$i]['file'] = 'tut_form.html';
$modversion['templates'][$i]['description'] = '';
$i++;
$modversion['templates'][$i]['file'] = 'tut_client_list.html';
$modversion['templates'][$i]['description'] = '';
$i++;
$modversion['templates'][$i]['file'] = 'tut_main.html';
$modversion['templates'][$i]['description'] = '';
$i++;

这样就可以很方便的创建模板了,不用担心序号了。因为变量$i负责计数。它从1开始,然后每次加1


第二步- 创建必须的文件
创建2个文件夹:
tutorial/blocks
tutorial/templates/blocks
tutorial/blocks中,创建一个文件tutorial_block.php ,输入以下代码:

<?php

function tut_blockList(){
$block=array();
$block['mytext']="Hello world! This is my new Block!";
return $block;
}

?>

注意事项:

  • 这个函数必须返回一个名为 $block的变量
  • $block必须为一个数组.
  • 可以向这个数组内放任何东西,包括另外一个关联数组。
  • 区块可以在模块之外的地方调用,因此如果你包含了其他的文件,务必保证区块可以知道被包含文件的确切位置。


tutorial/templates/blocks创建一个文件tutorial_block.html ,输入以下代码

<{$block.mytext}>

重新安装一下这个模块,就可以在区块管理页面中看到 'Block for Tutorial'这个区块了,使它可见,然后到首页去看一下效果。.

恭喜你,已经创建了第一个区块!

第三步- 创建options(参数)

这个机制可以让我们创建更加灵活的区块。
打开 tutorial/xoops_version.php输入如下红色的内容:

// Blocks
$modversion['blocks'][1]['file'] = "tutorial_block.php";
$modversion['blocks'][1]['name'] = 'Block for Tutorial';
$modversion['blocks'][1]['description'] = 'This is a Block for the tutorial module';
$modversion['blocks'][1]['show_func'] = "tut_blockList";
$modversion['blocks'][1]['template'] = 'tutorial_block.html';
$modversion['blocks'][1]['edit_func'] = "tut_blockList_edit";
$modversion['blocks'][1]['options'] = 'Hello|1';

第一行告诉Xoops 区块的编辑函数是什么。这个函数必须也在tutorial_block.php中。第二行指定了参数默认值。这个区块中,有2个 options, 默认值分别为 "Hello" 和 "1". 采用'|'分隔.

打开 tutorial/blocks/tutorial_block.php

Replace all code with this:

<?php

function tut_blockList($options){
$block=array();
$block['textOne']=$options[0];
$block['textTwo']=$options[1];

return $block;
}

function tut_blockList_edit($options){
$form = "Option 1: <input type='text' size='9' name='options[0]' value='$options[0]' />";
$form .= "<br />";
$form .= "Option 2: <input type='text' size='1' name='options[1]' value='$options[1]' />";
$form .= "<br />";
return $form;
}

?>

现在创建了一个新的函数 (tut_blockList_edit) ,这个函数用来设置区块。函数的声明表明 tut_blockList 它接受xoops传过来的参数 ($options)
注意事项

  • 这个函数必须返回一个叫做$form的变量.
  • $form必须是一个字符串,而不是数组。
  • 可以有多个参数。
  • Xoops 会自行存储这些参数到xoops的数据库,所以你不用担心保存、更新这些参数的值。
  • $form中必须有参数命名的表单内容.
  • options(参数)必须从0开始,比如 name='options[0]'.

打开 tutorial/templates/blocks/tutorial_block.html输入

<p>My First option is: <{$block.textOne}></p>
<p>My Second option is: <{$block.textTwo}></p>

好,为了让参数正常运行,我们需要重新安装这个模块。
重新安装后,设置区块可见,这首页,可以看到2个参数,一个是'Hello' ,另一个是 '1'. 从后台改变这2个参数,会发现首页也会跟着改变

哈!成功了!

这里是完成后的文件。


Completed Module from part 4

Part 5 - Guidlines for Module Development

posted @ 2008-04-19 10:10 xxp 阅读(146) | 评论 (1)编辑

XOOPS模块开发快速入门中文翻译(八)

   由于这两天一直研究XOOPS的模块,所以找到了这篇很好的模块开发快速入门。
看了以后,就兴致勃勃的来开发模块了,可是开发的过程中遇到一些问题。
应该是我看的太快了,要学而时习之啊。因此翻译在这里。
==============
作者:Surance Yin
邮箱:Suranceyin@yahoo.com.cn
主页:http://www.fltek.com.cn
=================

第六步- 插入数据

现在我们来创建一个让用户插入数据库的表单(参考第一章).
打开 tutorial/templates/tut_form.html. 输入:

<form id="myform" name="myform" method="post" action="index.php">
<table width="400" border="0">
<tr>
<td align="right"><{$smarty.const.TT_NAME}></td>
<td><input type="text" name="name"></td>
</tr><tr>
<td align="right"><{$smarty.const.TT_ADDRESS}></td>
<td><input type="text" name="address"></td>
</tr><tr>
<td align="right"><{$smarty.const.TT_TELEPHONE}></td>
<td><input type="text" name="tel"></td>
</tr><tr>
<td align="right"><{$smarty.const.TT_EMAIL}></td>
<td><input type="text" name="email"></td>
</tr><tr>
<td></td>
<td><input type="button" value="Submit" onclick="xajax_processFormData(xajax.getFormValues('myform'));" /></td>
</tr>
</table>
</form>

打开 tutorial/functions.php. 输入:

<?php

require_once XOOPS_ROOT_PATH . '/class/template.php';
if (!isset($xoopsTpl)) {
$xoopsTpl = new XoopsTpl();
}
$xoopsTpl->xoops_setCaching(0);


function processFormData($arg)
{
// do some stuff based on $arg like query data from a database and
// put it into a variable like $newContent
$newContent = "Button pressed";

// Instantiate the xajaxResponse object
$objResponse = new xajaxResponse();

// add a command to the response to assign the innerHTML attribute of
// the element with id="SomeElementId" to whatever the new content is
$objResponse->assign("thisID","innerHTML", $newContent);

//return the xajaxResponse object
return $objResponse;
}

function showForm()
{
global $xoopsTpl;

$text = $xoopsTpl->fetch('db:tut_form.html');

$objResponse = new xajaxResponse();
$objResponse->assign("formDiv","innerHTML",$text);
return $objResponse;
}

?>

require_once XOOPS_ROOT_PATH . '/class/template.php';
if (!isset($xoopsTpl)) {
$xoopsTpl = new XoopsTpl();
}
$xoopsTpl->xoops_setCaching(0);
这一行对于2.0.x 系列版本的xoops (我不清楚 2.2.x)是必须的。 问题是:在tutorial/index.php. xoops 2.2 $xoopsTpl是在require('http://www.cnblogs.com/mainfile.php')定义的; 而 xoops 2.0.x 是在require(XOOPS_ROOT_PATH.'/header.php')定义的。这就是说,在 2.0.17 版本中开发的话, xajax 代码中需要获取$xoopsTpl解决方案是我们自己声明 $xoopsTpl .这就是这几行要做的事情。第一行引入了包含 $xoopsTpl类的文件。然后通过isset看是否设置过 $xoopsTpl变量。如果没有则声明它。然后取消缓存,随时更新模板。这样我可以随时改变模板内容,还不怕无法更新缓存。最后发布的时候,可以取消这一行。

$newContent = "Button pressed";对于xajax是必要的,因为即使是notice的报错,也会是xajax出错。有问题的话,可以用 $xajax->setFlag("debug", true);来调试。
function showForm()
{
global $xoopsTpl;
$text = $xoopsTpl->fetch('db:tut_form.html');创建了一个函数showForm 声明$xoopsTpl为全局变量,这样才可以在函数里面使用。开始有趣了:我创建爱了一个$text变量,这个变量抓取了tut_form.html模板。(即模板中包含模板)。

objResponse->assign("formDiv","innerHTML",$text);变量$text里面含有另外一个模板,现在把它分配给div


打开 tutorial/index.php.输入:

<?php
// Tutorial
// Created by KaotiK
require('http://www.cnblogs.com/mainfile.php');

require_once(XOOPS_ROOT_PATH.'/modules/tutorial/functions.php');
require_once(XOOPS_ROOT_PATH.'/modules/tutorial/class/xajax/xajax_core/xajax.inc.php');

$xajax = new xajax();
$xajax->registerFunction("processFormData");
$xajax->registerFunction("showForm");
//$xajax->setFlag("debug", true);
$xajax->processRequest();

$Xjavapath=XOOPS_URL.'/modules/tutorial/class/xajax';
$xajaxjava=$xajax->getJavascript($Xjavapath);

$xoopsOption['template_main'] = 'tut_main.html';
require(XOOPS_ROOT_PATH.'/header.php');
$xoopsTpl->assign('xajaxjava', $xajaxjava);

require(XOOPS_ROOT_PATH.'/footer.php');
?>

$xajax->registerFunction("showForm");新加了一个函数的注册。


打开 tutorial/templates/tut_main.html. 输入

<p><{$xajaxjava}></p>
<p><a href="#" onclick="xajax_showForm();return false;">formtest</a></p>
<p><div id="formDiv"></div></p>
<div id="thisID"></div>

<a href="#" onclick="xajax_showForm();return false;">formtest</a>新加的一行可以调用showForm函数。return false;停止响应

测试一下。打开tutorial 主页面,点击 formtest. 会出现一个表单,点击写有 submit的按钮,可以看到新的一行,写着: Button pressed.所以,我们现在有2个div来显示2个输出。

第七步- 输入数据库

下一步我们将表单内容存入数据库

打开tutorial/functions.php 输入:

<?php

require_once XOOPS_ROOT_PATH . '/class/template.php';
if (!isset($xoopsTpl)) {
$xoopsTpl = new XoopsTpl();
}
$xoopsTpl->xoops_setCaching(0);


function processFormData($arg)
{
// do some stuff based on $arg like query data from a database and
// put it into a variable like $newContent
$newContent = addClient($arg);

// Instantiate the xajaxResponse object
$objResponse = new xajaxResponse();

// add a command to the response to assign the innerHTML attribute of
// the element with id="SomeElementId" to whatever the new content is
$objResponse->assign("thisID","innerHTML", $newContent);

//return the xajaxResponse object
return $objResponse;
}

function showForm()
{
global $xoopsTpl;

$text = $xoopsTpl->fetch('db:tut_form.html');

$objResponse = new xajaxResponse();
$objResponse->assign("formDiv","innerHTML",$text);
return $objResponse;
}

function addClient($data)
{
global $xoopsDB;
$myts = myTextSanitizer::getInstance();
$name=$myts->addslashes($data['name']);
$address=$myts->addslashes($data['address']);
$tel=$myts->addslashes($data['tel']);
$email=$myts->addslashes($data['email']);
$query = "Insert into ".$xoopsDB->prefix("tutorial_myform")." (name, address, telephone, email) values ('$name', '$address', '$tel', '$email' )";
$res=$xoopsDB->query($query);
if(!$res) {
$msg="error: $query";
} else {
$msg="Data was correctly inserted into DB!";
}
return $msg;
}

?>

调用了函数 addClient,这个函数从 tutorial_myform表单提取数据插入了数据库。相应的,函数 processFormData也改变了。这个函数会返回只是插入是否成功的 $msg。$msg 会显示在 <div> thisID中。 测试一下!

第八步-把users列表显示

现在我们把数据库里面的user全部显示出来。
打开 tutorial/xoops_version.php 并 改变模板处:

// Templates
$modversion['templates'][1]['file'] = 'tut_form.html';
$modversion['templates'][1]['description'] = '';

$modversion['templates'][2]['file'] = 'tut_client_list.html';
$modversion['templates'][2]['description'] = '';

$modversion['templates'][3]['file'] = 'tut_main.html';
$modversion['templates'][3]['description'] = '';

创建一个新的文件: tutorial/templates/tut_client_list.html 输入:

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><{$smarty.const.TT_NAME}></td>
<td><{$smarty.const.TT_ADDRESS}></td>
<td><{$smarty.const.TT_TELEPHONE}></td>
<td><{$smarty.const.TT_EMAIL}></td>
</tr>
<{foreach item=cli from=$clients}>
<tr>
<td><{$cli.name}></td>
<td><{$cli.address}></td>
<td><{$cli.telephone}></td>
<td><{$cli.email}></td>
</tr>
<{/foreach}>
</table>

更新一下模块。
打开 tutorial/index.php输入

<?php
// Tutorial
// Created by KaotiK
require('http://www.cnblogs.com/mainfile.php');

require_once(XOOPS_ROOT_PATH.'/modules/tutorial/functions.php');
require_once(XOOPS_ROOT_PATH.'/modules/tutorial/class/xajax/xajax_core/xajax.inc.php');

$xajax = new xajax();
$xajax->registerFunction("processFormData");
$xajax->registerFunction("showForm");
$xajax->registerFunction("listClients");
//$xajax->setFlag("debug", true);
$xajax->processRequest();

$Xjavapath=XOOPS_URL.'/modules/tutorial/class/xajax';
$xajaxjava=$xajax->getJavascript($Xjavapath);

$xoopsOption['template_main'] = 'tut_main.html';
require(XOOPS_ROOT_PATH.'/header.php');
$xoopsTpl->assign('xajaxjava', $xajaxjava);

require(XOOPS_ROOT_PATH.'/footer.php');
?>

打开 tutorial/functions.php输入:

<?php

require_once XOOPS_ROOT_PATH . '/class/template.php';
if (!isset($xoopsTpl)) {
$xoopsTpl = new XoopsTpl();
}
$xoopsTpl->xoops_setCaching(0);

function processFormData($arg)
{
// do some stuff based on $arg like query data from a database and
// put it into a variable like $newContent
$newContent = addClient($arg);

// Instantiate the xajaxResponse object
$objResponse = new xajaxResponse();

// add a command to the response to assign the innerHTML attribute of
// the element with id="SomeElementId" to whatever the new content is
$objResponse->assign("thisID","innerHTML", $newContent);

//return the xajaxResponse object
return $objResponse;
}

function showForm()
{
global $xoopsTpl;

$text = $xoopsTpl->fetch('db:tut_form.html');

$objResponse = new xajaxResponse();
$objResponse->assign("formDiv","innerHTML",$text);
return $objResponse;
}

function addClient($data)
{
global $xoopsDB;
$myts = myTextSanitizer::getInstance();
$name=$myts->addslashes($data['name']);
$address=$myts->addslashes($data['address']);
$tel=$myts->addslashes($data['tel']);
$email=$myts->addslashes($data['email']);
$query = "Insert into ".$xoopsDB->prefix("tutorial_myform")." (name, address, telephone, email) values ('$name', '$address', '$tel', '$email' )";
$res=$xoopsDB->query($query);
if(!$res) {
$msg="error: $query";
} else {
$msg="Data was correctly inserted into DB!";
}
return $msg;
}

function listClients(){
global $xoopsTpl;

$clients=clientLoader();
$xoopsTpl->assign('clients', $clients);

$text = $xoopsTpl->fetch('db:tut_client_list.html');

$objResponse = new xajaxResponse();
$objResponse->assign("clientListDiv","innerHTML",$text);
return $objResponse;

}

function clientLoader(){
global $xoopsDB;
$client=array();
$q=1;
$query = $xoopsDB->query(' SELECT * FROM ' . $xoopsDB->prefix('tutorial_myform'));
while($myrow = $xoopsDB->fetchArray($query) )
{
$client[$q]['name'] = $myrow['name'];
$client[$q]['address'] = $myrow['address'];
$client[$q]['telephone'] = $myrow['telephone'];
$client[$q]['email'] = $myrow['email'];
$q++;
}
return $client;
}

?>

打开 tutorial/templates/tut_main.html,输入

<p><{$xajaxjava}></p>
<p><a href="#" onclick="xajax_showForm();return false;">formtest</a></p>
<p><a href="#" onclick="xajax_listClients();return false;">List Clients</a></p>
<p><div id="formDiv"></div></p>
<p><div id="thisID"></div></p>
<p><div id="clientListDiv"></div></p>

测试一下!进入tutorial的主页面,有两个超链接,一个是formtest 另外一个是List Clients. 点击 List Clients. 可以看到我们刚才插入的数据.点击formtest会出现一个表单。这就是2个ajax的效果。

这里是完整的文件下载


Completed Module from part 3

Part 4 - Xoops Blocks

posted @ 2008-04-19 09:37 xxp 阅读(140) | 评论 (1)编辑

2008年4月18日 #

XOOPS模块开发快速入门中文翻译(七)

  由于这两天一直研究XOOPS的模块,所以找到了这篇很好的模块开发快速入门。
看了以后,就兴致勃勃的来开发模块了,可是开发的过程中遇到一些问题。
应该是我看的太快了,要学而时习之啊。因此翻译在这里。
==============
作者:Surance Yin
邮箱:Suranceyin@yahoo.com.cn
主页:http://www.fltek.com.cn
================= 



 

第三章 ――建立一个具有Ajax功能的模块

Part 1 Building a simple module

Part 2 - using Smarty templates in a module

这一章,我会教会你怎么在模块里面用ajax。范例里面使用的是xajax. 当然,还有很多其他的ajax的工具,比如说主要由php实现的xajax, sajax 等. 还有一些是纯javascript脚本的,比如说scriptaculous. 当你看完这个教程的时候,可以大胆的尝试其他的ajax库。呵呵,我为什么会用Xajax呢?因为我比较熟悉php的编程,所以我觉得xajax更加灵活。
ajax是什么? 就是不用刷新网页的情况下更改网页的部分显示。这个功能很有用;尤其当要降低服务器负载的时候.
什么时候用ajax呢?举例说明:当你有一个数据表的时候,可以用ajax来存数据库.注意:ajax并不是万能的.这只是一个改善用户体验的工具而已。

开始吧!

第一步:下载模块文件

下载并安装这个文件。这里用的是第二章做好的文件。不同的是增加了一个class文件夹,文件夹里面有一个xajax子文件夹,里面放置了xajax的文件 (version 0.5 beta 4b)。另外,还要将 index.php重命名为index_from_part2.php 并创建一个新的 index file.


Tutorial module from part 2 with xajax files added
tutorial

第二步:使用xajax

这里是新版本的 index.php:

<?php
// Tutorial
// Created by KaotiK
require('http://www.cnblogs.com/mainfile.php');

require_once(XOOPS_ROOT_PATH.'/modules/tutorial/functions.php');
require_once(XOOPS_ROOT_PATH.'/modules/tutorial/class/xajax/xajax_core/xajax.inc.php');

$xajax = new xajax();
$xajax->registerFunction("processFormData");
//$xajax->setFlag("debug", true);
$xajax->processRequest();

$Xjavapath=XOOPS_URL.'/modules/tutorial/class/xajax';
$xajaxjava=$xajax->getJavascript($Xjavapath);

$xoopsOption['template_main'] = 'tut_main.html';
require(XOOPS_ROOT_PATH.'/header.php');

$xoopsTpl->assign('xajaxjava', $xajaxjava);

require(XOOPS_ROOT_PATH.'/footer.php');
?>

让我们一步一步来解释:

require_once(XOOPS_ROOT_PATH.'/modules/tutorial/functions.php');
require_once(XOOPS_ROOT_PATH.'/modules/tutorial/class/xajax/xajax_core/xajax.inc.php');

第一行引用了functions文件。这个文件里面有所有我的 xajax 和其他方法。在开始使用 xajax之前,可以创建2个文件,一个储存ajax方法,一个储存其他方法。第二行引用了xajax 的必须文件.

$xajax = new xajax();
$xajax->registerFunction("processFormData");
//$xajax->setFlag("debug", true);
$xajax->processRequest();

第一行创建了一个xajax对象。使用xajax之前,要明确一点:所有要用到的方法都要先注册给xajax。这就是第二行做的事情: $xajax->registerFunction("processFormData");.我会在解释functions.php时候再次说明的.第三行会给出一个输出,可以用来调试 xajax. 第四行启动xajax的功能. 注意:如果要在xoops里面使用xajax,以上代码的顺序是不能变化的。比如,如果将$xajax->processRequest();写在 require(XOOPS_ROOT_PATH.'/header.php');后面就不行了。为什么?因为xajax必须在没有html输出之前调用processRequest()方法, 而 XOOPS_ROOT_PATH.'/header.php具有一些html输出.

$Xjavapath=XOOPS_URL.'/modules/tutorial/class/xajax';
$xajaxjava=$xajax->getJavascript($Xjavapath);

xajax 的运行需要一个javascript 脚本文件。 因为要使用smarty,所以只能用这种方法来包含javascript文件了。第一行将xajax的根目录地址赋给变量$Xjavapath.然后再通过xajax内置的方法获取他所有的javascript脚本,并赋给变量$xajaxjava.

$xoopsOption['template_main'] = 'tut_main.html';
require(XOOPS_ROOT_PATH.'/header.php');

$xoopsTpl->assign('xajaxjava', $xajaxjava);

就像上一章讲到的,第一行指定了模板文件。第二行输出头部信息。第三行将xajax的脚本引用发给smarty模板。

require(XOOPS_ROOT_PATH.'/footer.php');
?>

这句上一章解释过了。

第三步- Functions.php

打开 tutorial/functions.php 写入以下代码:

&