一、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如何防止跳过登录访问(构造函数说明)的更多相关文章

  1. 谈谈动态地加载Jquery库文件的方法

    有时候,我们可能不会在网页中<script src="jquery.min.js" 来加载 Jquery 库,可能在用户点击某个按钮后,才去加载 Jquery 库. 好处不用 ...

  2. 浅谈PHP面向对象编程(六、自动加载及魔术方法)

    6.0 自动加载及魔术方法  6.1 自动加载 在PHP开发过程中,如果希望从外部引入一个class.通常会使用incluae和requre方法把定义这个class的文件包含进来.但是,在大型的开发项 ...

  3. PHP面向对象学习-属性 类常量 类的自动加载 构造函数和析构函数 访问控制(可见性)

    在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性.静态属性则是用 ::(双冒号):self::$ ...

  4. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

  5. ThinkPHP 3.2.3 自动加载公共函数文件的方法

    方法一.加载默认的公共函数文件 在 ThinkPHP 3.2.3 中,默认的公共函数文件位于公共模块 ./Application/Common 下,访问所有的模块之前都会首先加载公共模块下面的配置文件 ...

  6. paip.ikanalyzer 重加载词库的方法.

    paip.ikanalyzer 重加载词库的方法. 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn ...

  7. 基于 Koa平台Node.js开发的KoaHub.js的控制器,模型,帮助方法自动加载

    koahub-loader koahub-loader是基于 Koa平台Node.js开发的KoaHub.js的koahub-loader控制器,模型,帮助方法自动加载 koahub loader I ...

  8. VC中加载LIB库文件的三种方法

    VC中加载LIB库文件的三种方法 在VC中加载LIB文件的三种方法如下: 方法1:LIB文件直接加入到工程文件列表中   在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中&quo ...

  9. Atitit. 木马病毒的外部class自动加载机制------加载class的方法总结

    Atitit. 木马病毒的外部class自动加载机制------加载class的方法总结 Atitit.java load class methods 1. 动态加载jar文件和class文件. 1 ...

随机推荐

  1. 8.7 jquery-dom manipulation

    // 获得设定内容 [text(),html(),val()]; // 获得设定属性 [attr(),removeAttr()]; // 获得设定 css class [addClass,remove ...

  2. ACM/ICPC 之 网络流-拆点构图(POJ2391)

    需要直接到达,因此源点经过三条边后必须要达到汇点,但为了保证网络流的正确性(路径可反悔),因此不可限制层次网络的最高层次为3,最好的方法既是让所有点拆分成两个点,一个点从汇点进入,一个点通向汇点,任意 ...

  3. Ubuntu下三个实用的录屏软件

    Ubuntu下三个实用的录屏软件 Kazam 优点: 易安装 可选择区域录制,也可全屏录制 有录屏和截图功能 安装: sudo apt-get install kazam 展示: Simple Scr ...

  4. NYOJ题目27水池数目

    --------------------------------------------- 这道题有点坑,也怪我总是有点马虎,按照正常人的思维0是表示有水池啊竟然是1表示有水池,最坑的是写反了竟然还能 ...

  5. MVC学习笔记----缓存

    http://www.cnblogs.com/darrenji/p/3683306.html   视图缓存 http://www.cnblogs.com/darrenji/p/3649994.html ...

  6. MyBatis学习(四)MyBatis和Spring整合

    MyBatis和Spring整合 思路 1.让spring管理SqlSessionFactory 2.让spring管理mapper对象和dao. 使用spring和mybatis整合开发mapper ...

  7. [译]SSAS下玩转PowerShell(三)

    在第一篇中简单介绍了PowerShell,包含基本的一些命令,以及如何打开PowerShell,并且导航到SSAS对象.第二篇中学习了如何使用变量根据当前日期创建SSAS备份,以及如何运行MDX和XM ...

  8. DEV express 对Gridview某行的元素赋值

    1:获取选中的行某列的值 string colValue= this.gridView1.GetRowCellValue(this.gridView1.FocusedRowHandle, this.g ...

  9. 特征检测之HOG

    参考: http://blog.csdn.net/liulina603/article/details/8291093 http://blog.csdn.net/woxincd/article/det ...

  10. x64内核内存空间结构

    0x00 前言 本文主要是讨论Windows 7 x64下的内核虚拟地址空间的结构,可以利用WiinDBG调试的扩展命令"!CMKD.kvas"来显示x64下的内核虚拟地址空间的整 ...