php的ajax框架xajax入门与试用介绍


Posted in PHP onDecember 19, 2010

一、xajax与其它ajax框架的比较
xajax功能很简单,但很灵活!~它不象其它一些大的框架,功能确实强大,但执行速度不敢恭维。。功能虽多,但不够灵活。api多,学起来简直如同学习一门新的语言。
二、xajax功能介绍
xajax的功能比较简单,但就因为简单,所以灵活。同时,这也要求使用者要对javascrīpt / vbs 客户端脚本有一定的了解。因为它的功能是比较活的。可以说单纯使用xajax,什么也做不出,但配合js / vbs 又什么都做的出。
xajax主要是使用xajaxResponse这个类,它提供了一些方法,举例如下:
1、addAlert($sMsg)
弹出警告
2、addscrīpt($sJS)
执行某段js
3、$objResponse->addAssign("","","")
给页面中的某个元素附值,或者修改其属性
等等。。。。

所以xajax不是死的,它不能做出XXX XXX功能来,但是它可以灵活的控制客户端的js / vbs,去完成我们要实现的效果。

三、xajax安装配置
不需要特别的安装和配置,只要下载其文件包,解压到网站目录中
下载地址:
http://www.xajaxproject.org/

四、用xajax做会员注册和登陆
1、数据库
采用mysql5.0,数据库名zl 表名zl_user 表结构
id int(11) auto_increment
zl_user varchar(50)
zl_pwd varchar(50)
email varchar(50)

http://blog.knowsky.com/

2、reg.php 注册文件(内有说明)

<?php 
require_once("inc/xajax.inc.php"); 
//使用xajax则必须首先引入xajax.inc.php 
$xajax = new xajax("inc/signup.php"); 
//创建一个xajax对象,为singup.php 
$xajax->registerFunction("processForm"); 
//使用singup.php里的processForm函数 
?> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<link rel="stylesheet" href="http://blogbeta.blueidea.com/css/style.css" _fcksavedurl=""http://blogbeta.blueidea.com/css/style.css"" type="text/css"> 
<title>无标题文档</title> 
<?php $xajax->printJavascrīpt('inc/'); ?> 
<scrīpt type="text/javascrīpt"> 
function submitSignup() 
{ 
xajax.$('submitButton').disabled=true; 
xajax.$('submitButton').value="http://blogbeta.blueidea.com/wait..."; 
//修改id为submitButton的属性 
xajax_processForm(xajax.getFormValues("signupForm")); 
//这里xajax_ 后面跟要使用哪个函数这里是 processForm,后面跟的是signupForm这个表单各项的集合 
return false; 
} 
</scrīpt> 
</head> 
<body><form id="signupForm" action="javascrīpt:void(null);" ōnSubmit="submitSignup();"> 
<div id="main"> 
<div id="m1">用 户 注 册</div> 
<div id="formDiv"> 
<table width="100%" border="0" cellspacing="0" cellpadding="5"> 
<tr> 
<td align="right"> </td> 
<td> </td> 
</tr> 
<tr> 
<td width="31%" align="right">用户名:</td> 
<td width="69%"><input name="usr" type="text" id="usr" /> 
*</td> 
</tr> 
<tr> 
<td align="right">密码:</td> 
<td><input name="pwd" type="password" id="pwd" /> 
*</td> 
</tr> 
<tr> 
<td align="right">密码:</td> 
<td><input name="pwd2" type="password" id="pwd2" /> 
*</td> 
</tr> 
<tr> 
<td align="right">Email:</td> 
<td><input name="email" type="text" id="email" /> 
* 可用于找回密码</td> 
</tr> 
<tr align="center"> 
<td colspan="2"><input type="submit" name="submitButton" value="提交" class="button" /> 
<input type="reset" name="Submit2" value="重置" class="button" /></td> 
</tr> 
</table> 
</div> 
</div> 
</form> 
</body> 
</html>

点提交后执行singup.php里的processForm函数

3、inc/singup.php

<?php 
define ('XAJAX_DEFAULT_CHAR_ENCODING', 'gb2312' ); 
//注意这里,必须要设置gb2312,不然中文会乱码 
require_once("xajax.inc.php"); 
require_once("function.php"); 
$xajax = new xajax(); 
$xajax->registerFunction("processForm"); 
//同reg.php文件 function processForm($aFormValues) 
{ 
$objResponse = new xajaxResponse(); 
require_once("conn.php"); 
$usr=$aFormValues['usr']; 
$email=$aFormValues['email']; 
$pwd=$aFormValues['pwd']; 
$pw=Md5($pwd); 
$errmsg=""; 
//要过滤的非法字符 
$ArrFiltrate=array("'",";","union"); 
foreach($aFormValues as $key=>$value){ 
if (FunStringExist($value,$ArrFiltrate)){ 
$objResponse->addAlert("输入的信息含有非法字符\"' ; union!\""); 
$objResponse->addAssign("submitButton","value","继续"); 
$objResponse->addAssign("submitButton","disabled",false); 
return $objResponse; 
} 
} 
if (trim($usr) == "") 
{ 
$errmsg.="请输入用户名!\n"; 
} 
if (trim($pwd) == "") 
{ 
$errmsg.="请输入密码!\n"; 
} 
if ($pwd != $aFormValues['pwd2']) 
{ 
$errmsg.="两次输入的密码不一致!\n"; 
} 
if (!CheckEmailAddr($email)) 
{ 
$errmsg.="邮件地址不正确!\n"; 
} 
$sql="select * from zl_usr where zl_usr='$usr'"; 
$result=mysql_query($sql,$db); 
if($myrow=mysql_fetch_array($result)){ 
$errmsg.="用户名已经存在!\n"; 
} 
if ($errmsg=="") 
{ 
$sForm = "注册成功<br>用户名:".$usr."<br>email:".$email.""; 
$sql="insert into zl_usr(zl_usr,zl_pwd,email) values('$usr','$pw','$email')"; 
$result=mysql_query($sql,$db); 
$objResponse->addAssign("formDiv","innerHTML",$sForm); 
} 
else 
{ 
$objResponse->addAlert($errmsg); 
//弹出错误信息 
$objResponse->addAssign("submitButton","value","继续"); 
//修改submitButton的value为继续 
$objResponse->addAssign("submitButton","disabled",false); 
//修改submitButton这个按扭的属性 
} 
return $objResponse; 
} 

$xajax->processRequests(); 
?>

这个文件中对信息进行了有效性判断,包括:用户名是否已经注册过、信息中是否有非法字符、邮件地址是否正确、两次输入的密码是否一致,如果没有错误则输入到数据库中,并
$objResponse->addAssign("formDiv","innerHTML",$sForm);
在formDiv中重新插入代码,内容为$sForm
$sForm = "注册成功<br>用户名:".$usr."<br>email:".$email."";

如果有错误信息则
$objResponse->addAlert($errmsg);
//弹出错误信息
$objResponse->addAssign("submitButton","value","继续");
$objResponse->addAssign("submitButton","disabled",false);
//修改submitButton这个按扭的属性

3、login.php 登陆文件

<?php 
require_once("inc/xajax.inc.php"); 
$xajax = new xajax("inc/login.php"); 
$xajax->registerFunction("processForm"); 
?> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<link rel="stylesheet" href="http://blogbeta.blueidea.com/css/style.css" _fcksavedurl=""http://blogbeta.blueidea.com/css/style.css"" type="text/css"> 
<title>无标题文档</title> 
<?php $xajax->printJavascrīpt('inc/'); ?> 
<scrīpt type="text/javascrīpt"> 
function submitSignup() 
{ 
xajax.$('submitButton').disabled=true; 
xajax.$('submitButton').value="http://blogbeta.blueidea.com/wait..."; 
xajax_processForm(xajax.getFormValues("signupForm")); 
return false; 
} 
</scrīpt> 
</head> 
<body><form id="signupForm" action="javascrīpt:void(null);" ōnSubmit="submitSignup();"> 
<div id="main"> 
<div id="m1">用 户 登 陆</div> 
<div id="formDiv"> 
<table width="100%" border="0" cellspacing="0" cellpadding="5"> 
<tr> 
<td align="right"> </td> 
<td> </td> 
</tr> 
<tr> 
<td width="31%" align="right">用户名:</td> 
<td width="69%"><input name="usr" type="text" id="usr" /> 
*</td> 
</tr> 
<tr> 
<td align="right">密码:</td> 
<td><input name="pwd" type="password" id="pwd" /> 
*</td> 
</tr> <tr align="center"> 
<td colspan="2"><input type="submit" name="submitButton" value="提交" class="button" /> 
<input type="reset" name="Submit2" value="重置" class="button" /></td> 
</tr> 
</table> 
</div> 
</div> 
</form> 
</body> 
</html>

4、inc/login.php 登陆用的处理文件
<?php 
define ('XAJAX_DEFAULT_CHAR_ENCODING', 'gb2312' ); 
require_once("xajax.inc.php"); 
require_once("function.php"); 
$xajax = new xajax(); 
$xajax->registerFunction("processForm"); function processForm($aFormValues) 
{ 
$objResponse = new xajaxResponse(); 
require_once("conn.php"); 
$usr=$aFormValues['usr']; 
$email=$aFormValues['email']; 
$pwd=$aFormValues['pwd']; 
$pw=Md5($pwd); 
$errmsg=""; 
//要过滤的非法字符 
$ArrFiltrate=array("'",";","union"); 
foreach($aFormValues as $key=>$value){ 
if (FunStringExist($value,$ArrFiltrate)){ 
$objResponse->addAlert("输入的信息含有非法字符\"' ; union!\""); 
$objResponse->addAssign("submitButton","value","继续"); 
$objResponse->addAssign("submitButton","disabled",false); 
return $objResponse; 
} 
} 
if (trim($usr) == "") 
{ 
$errmsg.="请输入用户名!\n"; 
} 
if (trim($pwd) == "") 
{ 
$errmsg.="请输入密码!\n"; 
} 
$sql="select * from zl_usr where zl_usr='$usr' and zl_pwd='$pw'"; 
$result=mysql_query($sql,$db); 
if(!$myrow=mysql_fetch_array($result)){ 
$errmsg.="用户名不存在,或密码错误!\n"; 
} 
if ($errmsg=="") 
{ 
$sForm = "登陆成功"; 
$objResponse->addAssign("formDiv","innerHTML",$sForm); 
} 
else 
{ 
$objResponse->addAlert($errmsg); 
$objResponse->addAssign("submitButton","value","继续"); 
$objResponse->addAssign("submitButton","disabled",false); 
} 
return $objResponse; 
} 

$xajax->processRequests(); 
?>

登陆于注册原理差不多,就不废话了:)

另外下面是两个用到的文件代码 conn.php function.php
conn.php

<?php 
$database="zl";//MYSQL数据库名 
$db = mysql_connect("127.0.0.1", "root","123456");//MYSQL数据库用户名和密码 
mysql_select_db($database,$db); 
?> 
function.php <?php 
function CheckEmailAddr($C_mailaddr) 
{ 
if (!eregi("^[_a-z0-9-] (.[_a-z0-9-] )*@[a-z0-9-] (.[a-z0-9-] )*$", 
$C_mailaddr)) 
{ 
return false; 
} 
return true; 
} 
//是否存在数组中的值 
function FunStringExist($StrFiltrate,$ArrFiltrate){ 
foreach ($ArrFiltrate as $key=>$value){ 
if (eregi($value,$StrFiltrate)){ 
return true; 
} 
} 
return false; 
} 
?>

PHP 相关文章推荐
require(),include(),require_once()和include_once()的异同
Jan 02 PHP
PHP程序61条面向对象分析设计的经验小结
Nov 12 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
Php连接及读取和写入mysql数据库的常用代码
Aug 11 PHP
php中explode函数用法分析
Nov 15 PHP
PHP递归创建多级目录
Nov 05 PHP
twig里使用js变量的方法
Feb 05 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
Oct 08 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
May 28 PHP
PHP如何解决微信文章图片防盗链
Dec 09 PHP
Swoole扩展的6种模式深入详解
Mar 04 PHP
几款免费开源的不用数据库的php的cms
Dec 19 #PHP
PHP操作XML作为数据库的类
Dec 19 #PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 #PHP
PHP与MySQL开发的8个技巧小结
Dec 17 #PHP
hessian 在PHP中的使用介绍
Dec 13 #PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
Dec 12 #PHP
php 高性能书写
Dec 11 #PHP
You might like
php利用gd库为图片添加水印
2016/11/09 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
javascript下function声明一些小结
2007/12/28 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
jQuery 版元素拖拽原型代码
2011/04/25 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
python提取内容关键词的方法
2015/03/16 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
python 字段拆分详解
2019/12/17 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
电子信息专业学生自荐信
2013/11/09 职场文书
土木建筑学生自我评价
2014/01/14 职场文书
廉洁自律个人总结
2015/02/14 职场文书
Python 可迭代对象 iterable的具体使用
2021/08/07 Python
Apache POI的基本使用详解
2021/11/07 Servers
实例详解Python的进程,线程和协程
2022/03/13 Python