ajax的使用:(ajaxReturn[ajax的返回方法]),(eval返回字符串);分页;第三方类(page.class.php)如何载入;自动加载函数库(functions);session如何防止跳过登录访问(构造函数说明)
一、ajax例子:ajaxReturn("ok","eval")->thinkphp中ajax的返回值的方法,返回参数为ok,返回类型为eval(字符串)
1.MainController.class.php
<?php
namespace Ajaxtest\Controller;
use Think\Controller;
class MainController extends Controller
{
public function zhuye()
{
$this->show();
}
public function addchuli()
{
$n = D("Nation"); //造对象
$n->create(); //POST传送,自动收集表单
$r = $n->add();
if($r)
{
$this->ajaxReturn("ok","eval"); //ajax的返回方法,eval返回字符串
}
else
{
$this->ajaxReturn("no","eval");
}
}
}
2.zhuye.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="__PUBLIC__/js/jquery-1.11.2.min.js"></script><!--__PUBLIC__引入jQuery文件-->
<title>Ajax主页面</title>
</head>
<body>
<div>代号:<input type="text" id="code" /></div>
<div>名称:<input type="text" id="name" /></div>
<input type="button" id="btn" value="添加" />
</body>
<script type="text/javascript">
$("#btn").click(function(){
var code = $("#code").val();
var name = $("#name").val();
$.ajax({
url:"__CONTROLLER__/addchuli", //控制器路径的addchuli()方法
data:{Code:code,Name:name}, //大小写要和数据库对应
type:"POST",
dataType:"TEXT",
success: function(data)
{
if(data == "ok")
{
window.location.href="__CONTROLLER__/zhuye";//添加成功后返回到显示页面,走控制器的zhuye()方法
}
}
});
})
</script>
</html>
二、分页
*把要使用的类放到根目录下,如Fenye(模块)/fzl(模块下自定义文件夹)/Page.class.php,要在类里面写上命名空间

*如何在控制器里面引入第三方类:
1.FenyeController.class.php
<?php
namespace Fenye\Controller;
use Think\Controller;
class FenyeController extends Controller
{
public function zhuye()
{
$n = D("chinastates");
$zs = $n->count(); //求表的总条数
$p = new \Fenye\Fzl\Page($zs,15);//引入Page.class.php文件,造一个实例化对象,Page(总条数,每页几条)
//$p->limit;//echo $p->limit;输出的是LIMIT 0,15;如何把LIMIT去掉?需要在Page.class.php中的56行做下修改,就可以了
$btndiv = $p->fpage();//把上下翻页的按钮显示出来
$attr = $n->limit($p->limit)->select(); //$p->limit就是一个字符串(0,15),直接放在limit()里面就可以
$this->assign("china",$attr);//注册chinastates表的信息,到html调用
$this->assign("btn",$btndiv);//注册上下翻页按钮,到html调用
$this->show();
}
}
2.zhuye.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>地区代号</td>
<td>地区名称</td>
<td>父级代号</td>
</tr>
<foreach name="china" item="v" >
<tr>
<td>{$v.areacode}</td>
<td>{$v.areaname}</td>
<td>{$v.parentareacode}</td>
</tr>
</foreach>
</table>
<div>{$btn}</div>
</body>
</html>
三、自动加载函数库(functions):可以把第三方的一些比较好用的函数,放到functions里面,需要用的时候可自动加载
1.建一个functions.php文件,路径为'模块/Common/functions.php'

2.在Jiazai这个模块下的Conf文件夹下修改配置文件config.php

3.例子(求字符串的长度)
functions.php
<?php
function CD($str)
{
return strlen($str);
}
JiazaiController.class.php
<?php
namespace Jiazai\Controller;
use Think\Controller;
class JiazaiController extends Controller
{
public function jiazai()
{
$str = "/* 数据库设置 */";
echo CD($str); //调用函数库的CD方法
}
}
四、session如何防止跳过登录访问
*在模块下面建一个ParentController.class.php控制器,这个控制器的作用是在它的平级模板(比如:MainController.class.php控制器)和think里的Controller之间做一个过渡控制器,顺序是:MainController.class.php继承自ParentController.class.php,而ParentController.class.php继承自Controller,在ParentController.class.php里面写一个构造函数,这个构造函数的作用是用户访问各控制器(Main)时,先走ParentController.class.php,判断session是否存在,若不存在,跳转登录,若存在,可以访问
*构造函数:
PHP构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。这是PHP5中的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5中仍然可以用,但现在以经很少有人用了,这样做的好处是可以使构造函数独立于类名,当类名发生改变时不需要改相应的构造函数名称了。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜索一个php4中的写法,与类名相同名的构造方法。格式:function __construct ( [参数] ) { … … }在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务。比如对成属性在创建对象的时候赋初值。
LoginController.class.php
<?php
namespace Login\Controller;
use Think\Controller;
class LoginController extends Controller
{
public function login()
{
session("username","zhangsan"); //测试,给定一个session
}
}
ParentController.class.php
<?php
namespace Login\Controller;
use Think\Controller;
class ParentController extends Controller
{
//构造函数
public function __construct()
{
parent::__construct();
if(session('?username'))
{
}
else
{
$this->redirect('Login/Login/login',array(),3,'请登录...');
}
}
}
MainController.class.php
<?php
namespace Login\Controller;
use Login\Controller\ParentController; //注意书写格式
class MainController extends ParentController //随便一个控制器
{
public function test()
{
}
}
-----------
ajax的使用:(ajaxReturn[ajax的返回方法]),(eval返回字符串);分页;第三方类(page.class.php)如何载入;自动加载函数库(functions);session如何防止跳过登录访问(构造函数说明)的更多相关文章
- 谈谈动态地加载Jquery库文件的方法
有时候,我们可能不会在网页中<script src="jquery.min.js" 来加载 Jquery 库,可能在用户点击某个按钮后,才去加载 Jquery 库. 好处不用 ...
- 浅谈PHP面向对象编程(六、自动加载及魔术方法)
6.0 自动加载及魔术方法 6.1 自动加载 在PHP开发过程中,如果希望从外部引入一个class.通常会使用incluae和requre方法把定义这个class的文件包含进来.但是,在大型的开发项 ...
- PHP面向对象学习-属性 类常量 类的自动加载 构造函数和析构函数 访问控制(可见性)
在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性.静态属性则是用 ::(双冒号):self::$ ...
- 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间
[源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...
- ThinkPHP 3.2.3 自动加载公共函数文件的方法
方法一.加载默认的公共函数文件 在 ThinkPHP 3.2.3 中,默认的公共函数文件位于公共模块 ./Application/Common 下,访问所有的模块之前都会首先加载公共模块下面的配置文件 ...
- paip.ikanalyzer 重加载词库的方法.
paip.ikanalyzer 重加载词库的方法. 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn ...
- 基于 Koa平台Node.js开发的KoaHub.js的控制器,模型,帮助方法自动加载
koahub-loader koahub-loader是基于 Koa平台Node.js开发的KoaHub.js的koahub-loader控制器,模型,帮助方法自动加载 koahub loader I ...
- VC中加载LIB库文件的三种方法
VC中加载LIB库文件的三种方法 在VC中加载LIB文件的三种方法如下: 方法1:LIB文件直接加入到工程文件列表中 在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中&quo ...
- Atitit. 木马病毒的外部class自动加载机制------加载class的方法总结
Atitit. 木马病毒的外部class自动加载机制------加载class的方法总结 Atitit.java load class methods 1. 动态加载jar文件和class文件. 1 ...
随机推荐
- 51nod1073(约瑟夫环)
题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1073 题意: 中文题诶~ 思路: 直接模拟的话O(n*k)的 ...
- VNC连接远程Ubuntu设置
一.windows 远程软件VNCViewer 这个不多说: 下载地址:http://www.realvnc.com/download/viewer/ 二.安装 vnc-server apt-get ...
- MIS系统开发利器,快速的字典录入解决方案,另类的、可管理的.NET DataWindow
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- Intel VT入门
前言 传说中的VT貌似很神秘的样子,关于VT入门的资料又很少,于是研究了一番 由于资源有限,自身水平亦有限,并且是闭门造车之作,如有错误的地方请指正,不胜感激! 关于VT可以先参考海风月影写的 ...
- Hibernate的事务处理
事务:事务就是逻辑上的一组操作,要么全都成功,要么全都失败!!! 事务特性 原子性:事务一组操作不可分割. 一致性:事务的执行前后,数据完整性要保持一致. 隔离性:一个事务在执行的过程中不应该受到其他 ...
- Intent传递list<bean>集合
首先你定义的bean需要继承Serializable接口 //传递list<bean>集合Intent intent = new Intent(ViolationOfTheQueryAct ...
- 解决SVN更新代码是出现previous operation has not finished; run cleanup if it was interrupted这个错误
解决方法:清空svn的队列 1.下载sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc.db (查看.svn文件需要打开显示隐藏文件夹) 3.将sqlite3.exe放到.sv ...
- 首师大附中互测题:LJX的校园:入学典礼【C003】
[C003]LJX的校园:入学典礼[难度C]—————————————————————————————————————————————————————————————————————————————— ...
- ffmpeg 屏幕录制 so easy....
linux Linux下使用FFmpeg进行屏幕录制相对比较方便,可以使用x11grab,使用如下的命令: ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec li ...
- c#操作mysql积累
1,连接字符串 Server=localhost;port=;User ID=root;password=admin;database=;charset=utf8;Allow User Variabl ...