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 相关文章推荐
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
PHP简单选择排序算法实例
Jan 26 PHP
PHP实现自动识别Restful API的返回内容类型
Feb 07 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
Jul 10 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
Nov 15 PHP
PHP获取指定日期是星期几的实现方法
Nov 30 PHP
分析php://output和php://stdout的区别
May 06 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
Oct 17 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
Mar 16 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 Session会话超时时间设置方法
2014/06/10 PHP
PHP异常处理浅析
2015/05/12 PHP
php封装的验证码工具类完整实例
2016/10/19 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
layui table 参数设置方法
2018/08/14 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
从零学python系列之教你如何根据图片生成字符画
2014/05/23 Python
10个Python小技巧你值得拥有
2018/09/29 Python
Python列表(List)知识点总结
2019/02/18 Python
详解python之heapq模块及排序操作
2019/04/04 Python
python基于socket实现的UDP及TCP通讯功能示例
2019/11/01 Python
python圣诞树编写实例详解
2020/02/13 Python
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
请说出几个常用的异常类
2013/01/08 面试题
软件缺陷的分类都有哪些
2014/08/22 面试题
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
小学毕业寄语大全
2014/04/03 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
村党支部换届选举方案
2014/05/02 职场文书
企业法人授权委托书
2014/09/25 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers