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 相关文章推荐
如何使用脚本模仿登陆过程
Nov 22 PHP
php header()函数使用说明
Jul 10 PHP
php生成短网址示例
May 05 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
Jun 06 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
PHP版微信公众平台红包API
Apr 02 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 PHP
orm获取关联表里的属性值
Apr 17 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
php自定义扩展名获取函数示例
Dec 12 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 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 各种排序算法实现代码
2009/08/20 PHP
PHP中数组的三种排序方法分享
2012/05/07 PHP
PHP基于CURL进行POST数据上传实例
2014/11/10 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
详解vue-cli中配置sass
2017/06/21 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
python实现按首字母分类查找功能
2019/10/31 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
一些高难度的SQL面试题
2016/11/29 面试题
Java语言程序设计测试题改错题部分
2014/07/22 面试题
大学生村官工作感言
2014/01/10 职场文书
春游踏青活动方案
2014/08/14 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
广告设计专业毕业生自我鉴定
2014/09/27 职场文书
交通事故和解协议书
2015/01/27 职场文书
教师读书笔记
2015/06/29 职场文书
教师节主题班会方案
2015/08/17 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书