1.MVC框架复习 2.Ajax加强 3.搜索建议 4,三级联动 5、刷新分页 6、Ajax局部动态更新数据

前端之家收集整理的这篇文章主要介绍了1.MVC框架复习 2.Ajax加强 3.搜索建议 4,三级联动 5、刷新分页 6、Ajax局部动态更新数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

MVC框架复习

·admin.PHP/index.PHP

定义常量APP_NAMEadminhome来区分入口。

define('APP_NAME','admin/');

require('init.PHP');

·init.PHP

定义ROOT_PATH常量,调用str_replace'','','';

isset判断获得参数,当参数不为空时,参数为空入口分别为adminindex时分别定义类名,进入相应的xxxController.class.PHP

同时判断Action参数并进入相应的xxxAction()函数执行命令

调用__autoload()自动加载函数接受参数$class_name,

调用strpos判断类名所包含的的是控制类还是模型类或者smarty类并逐步加载各文件

·xxxController.class.PHP

短路算法:defined('APP_NAME')ordie('非法访问');

继承父类baseController(用类的方法实例化smarty并配置smarty

执行xxxAction控制Model执行连接数据库进行数据处理,接收Model返回值,并控制view/smarty显示Model返回的数据

·xxxModel.class.PHP

执行sql语句进行增删改查并且return一个数据让controller接收。

·baseController.class.PHP

调用__construct()构造函数

<?PHP

//短路算法(||或运算,如果前面为真,后面就不知行;否则执行)

defined("APP_NAME")||die("非法访问");

classbaseController{

protected$smarty;//我们先定义类的属性,让他来保存实例化的对象

publicfunction__construct(){

$this->initSmarty();

}

privatefunctioninitSmarty(){

requireROOT_PATH."plugins/smarty/smarty.class.PHP";

$this->smarty=newSmarty();

$this->smarty->template_dir=ROOT_PATH."views/".APP_NAME;

$this->smarty->compile_dir=ROOT_PATH."data/template_c";

$this->smarty->left_delimiter="<{";

$this->smarty->right_delimiter="}>";

}

}

·baseModel.class.PHP

<?PHP

classbaseModel{

private$host;

private$user;

private$pass;

private$dbname;

publicfunction__construct($host,$user,$pass,$dbname){

//将参数保存到对象的属性

$this->host=$host;

$this->user=$user;

$this->pass=$pass;

$this->dbname=$dbname;

$this->connect();

}

privatefunctionconnect(){

MysqL_connect($this->host,$this->user,$this->pass);

MysqL_select_db($this->dbname);

MysqL_query("setnamesutf8");

}

}

Ajax加强

·<script>

functionvalidate(){

//获得ajaxXMLHttpRequest对象(由于浏览器兼容性)

varxhr;//理解成打开浏览器

if(window.ActiveXObject){//这是IE浏览器的

xhr=newActiveXObject();

}elseif(window.XMLHttpRequest){//这里是火狐浏览器的

xhr=newXMLHttpRequest();

}

//设置属性调用方法

varusername=document.getElementById('username');

//open()方法3个参数1,请求的方式;2,请求的url3,是否为异步请求

varurl="index.PHP?c=user&a=ajax_check&time="+newData().getTime()+"&username="+username.value;//这个请求的地址是服务器端的地址

xhr.open("GET",url,true);//打开地址栏

xhr.onreadystatechange=callback;//监视请求的状态的

xhr.send();

functioncallback(){

if(xhr.readyState==4){//表示请求已经完成

if(xhr.status==200){//表示请求成功

//获得服务器响应的数据

//alert(xhr.responseText);

if(xhr.responseText){

alert("用户名注册");

}else{

alert("用户名可以使用");

}

}

}

}

}

</script>

搜索建议

·AJAX步骤

1,varxhr;

if(window.ActiveXObject){

xhr=newActiveXObject('Microsoft.XMLHTTP');

}elseif(window.XMLHttpRequest){

xhr=newXMLHttpRequest();

}

2,url='';

3,xhr.open('POST',true);

4,xhr.onreadystatechange=callback;

functioncallback(){

if(xhr.readyState==4){

if(xhr.status==200){

获取xhr.responseText;

}

}

}

5,xhr.send('一个值');

·显示详细信息在标签调用onmouSEOver=showDetail(《{$value.user_id}》)’方法

send()POST方式时屏蔽乱码语句:xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

PHPjson_encode();方法将数组转化成json格式的字符串,Jseval'('+转化过来的字符串+')');来将字符串转化成json对象

·百度词条搜索建议:$sql="select*fromuserwhereusernamelike'$data%'";

建议div隐藏方法init(){

document.getElementById('dv').style.display='none';

}

三级联动

MysqL_connect('localhost','root','');

MysqL_select_db("china");

MysqL_query("setnamesutf8");

//获得用户点击的值以及应该显示的表明

$val=$_POST['val'];

$table=$_POST['table'];

if($table=='t_province'){

//查询所有的省

$sql="selectProNamefrom$tableorderbyProSort";

$result=MysqL_query($sql);

$rows=array();

while($row=MysqL_fetch_row($result)){

echo"<option>$row[0]</option>";

}

}elseif($table=='t_city'){

//已知ProName查询对应的市的名字

$sql="selectCityNamefromt_citywhereProID=(selectProIDfromt_provincewhereProName='$val')";

$result=MysqL_query($sql);

$rows=array();

while($row=MysqL_fetch_row($result)){

echo"<option>$row[0]</option>";

}

}elseif($table=='t_district'){

//已知CityName查询对应的县的名字

$sql="selectDisNamefromt_districtwhereCityID=(selectCityIDfromt_citywhereCityName='$val')";

$result=MysqL_query($sql);

$rows=array();

while($row=MysqL_fetch_row($result)){

echo"<option>$row[0]</option>";

}

}

仍在完善中

刷新分页·在controller显示模板

·在模板中自动加载viewpage1函数

·在模板的脚本文件获取tables内容,每次清空

·实例化xhr=newActiveXObject(‘Microsoft.XMLHTTP’)、newXMLHttpRequest();

·设置urlindex.PHP?c=fenye&a=process

·开启协议传输xhr.open('send',true);

·设置POST乱码编正xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

·开启监听并且在响应状态调用回调函数xhr.onreadystatechange=callback;

·开启sendsend('page='+page);

·判断状态if(xhr.readyState==4){

if(xhr.status==200){

开始处理语句~~varjson=eval('('+xhr.responseText+')');

varresult=eval('('+json[1]+')');

document.getElementById('item').innerHTML=json[0];

for(vari=0;i<result.length;i++){

vartrs=document.createElement('tr');

for(varj=0;j<7;j++){

vartds=document.createElement('td');

tds.innerHTML=result[i][j];

document.getElementById('tables').appendChild(trs);

trs.appendChild(tds);

}

}

·controller接收并且调用processAction函数

·在函数中接收page参数

连接数据库

设置pagesize

数据库调用getTotal()函数,处理数据返回总条数totalrows

求出总页数pages=ceiltotalrows除以pagesize

求出偏移量offset=pagesize乘以page-1

设置首页first=1前一页prev=page-1设置prev0

下一页next=page+1判断if($next<$pages){

$next=$page+1;

}else{

$next=$pages;

}

$last=$pages;

输出字符串

$str='<FONTcolor="red">'.$page.'/'.$pages.'|'.$total_rows.'</FONT><aonclick="viewpage('.$first.')"href="#">首页</a>

<aonclick="viewpage('.$prev.')"href="#">上页</a>

<aonclick="viewpage('.$next.')"href="#">下页</a>

<aonclick="viewpage('.$last.')"href="#">尾页</a>';

·调用数据模型的getPageoffsetpagesize函数

publicfunctiongetPage($offset,$pagesize){

$sql="select*frombooklimit$offset,$pagesize";

$result=MysqL_query($sql);

$rows=array();

while($row=MysqL_fetch_array($result)){

$rows[]=$row;

}

return$rows;

}

·在controller中接收数据调用json_encode()转化接收的数组成json格式的字符串

strjson_encode(pageInfo)放入一个数组

并且将这个数组调用json_code函数转化成字符串

·在模板脚本接收eval(‘(’+xhr.responseText+‘)’)

并运用DOM方法给模板赋值~

Ajax局部动态更新数据

调用responseXML的时候注意网页编码要使用unicodeDOM标签格式~~~

原文链接:https://www.f2er.com/ajax/166578.html

猜你在找的Ajax相关文章