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 ...
随机推荐
- How-to-uninstall-Meteor // install Meteor manually
How-to-uninstall-Meteor : http://www.uninstallapp.com/article/How-to-uninstall-Meteor-.html install ...
- Sass中文乱码问题(手动编译和watch编译)
一.sass手动编译出错 .scss文件中含有中文的时候编译报错(比如注释,比如字体栈),比如: foo.scss: 编译: 解决办法: 找到类似这个的路径的文件(仅供参考,不同环境可能不同): C: ...
- android 第三方登录 --- QQ
1,jar包 2,配置AndroidManifest.xml <activity android:name=".login.LoginActivity" android:co ...
- hdu2196 树形dp
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2196 Problem Description A school bought the fi ...
- python 爬虫(一)
1. 一次简单的网页访问 urllib 是一个标准的python库(意味着不需要安装任何附件的东西来运行这个demo),包含了通过网络请求数据的方法,处理cookies,甚至更改metadata比如h ...
- activity 、window与view的关系(下)
在activity的attacth方法中,通过policymanager 的makenewwindow来创建window 而window的具体实现是phonewindow 接下来通过setconten ...
- align使图片和文字居中
<img src=... align=absmiddle />
- Android入门(二):Android的系统架构
android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 从技术方面看,An ...
- CentOS上安装man手册
我的CentOS采用的是minimal方式安装的,学会遇到命令找不到的问题.今天我遇到的是,查找命令相关的man手册时,显示:通过查看CentOS iso, 我发现了man-pages这个rpm包.装 ...
- python 之 前端初识 html
html语法代码示例 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...