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 相关文章推荐
php生成的html meta和link标记在body标签里 顶部有个空行
May 18 PHP
CI框架自动加载session出现报错的解决办法
Jun 17 PHP
PHP文件锁函数flock()详细介绍
Nov 18 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
Jul 23 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
Yii框架中使用PHPExcel的方法分析
Jul 25 PHP
基于ThinkPHP删除目录及目录文件函数
Oct 28 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获得flv视频长度的实例代码
2017/10/26 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
javascript处理table表格的代码
2010/12/06 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
表单提交前触发函数返回true表单才会提交
2014/03/11 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
JS实现留言板功能
2017/06/17 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
保险经纪人求职信
2014/03/11 职场文书
世界读书日的活动方案
2014/08/20 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
个人借款协议书范本
2014/11/17 职场文书
研究生个人学年总结
2015/02/14 职场文书
食堂管理制度范本
2015/08/04 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python