tthinkphp对于ajax的调用及session的用法

Posted 梦深深处

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tthinkphp对于ajax的调用及session的用法相关的知识,希望对你有一定的参考价值。

一、ajax对于php是非常实用的一种方法,那么在thinkphp框架中ajax是不是一样好用呢?答案是肯定的。thinkphp针对ajax也有自己独特的用法:

首先我们在自己建的Admin文件下建立一个Index文件夹,然后在这个文件夹里边建一个ceshi.html文件,要用ajax就要用到jquery文件,所以我们要将jquery文件复制到Public文件夹下进行调用:

<!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>
<script src="__ROOT__/Public/js/jquery-3.2.0.min.js">//调用jquery</script>
</head>

<body>
    <select id ="leibie">
    </select>
</body>
<script>
    $.ajax({
        url:"__CONTROLLER__/shuju",
        dataType:"JSON",
        success:function(data){
            var str = "";
            for( var k in data){
                str = str+"<option value=\'"+data[k].lbid+"\'>"+data[k].lbname+"</option>";
            }
            $("#leibie").html(str);
        }
    })
</script>
</html>

然后我们在Controller文件夹内新建一个IndexController.class.php的文件,在里边添加ceshi方法和shuju方法:

<?php
namespace Admin\\Controller;
use Think\\Controller;
class IndexController extends Controller{
    public function index(){
        echo "欢迎使用Thinkphp";
    }
        public function ceshi(){
            $this->show();
        }
        public function shuju(){
                $n = M("leibie");//创建leibie表模型
                $arr = $n->select();
                $this->ajaxReturn($arr);//调该方法返回数据
        }
    }

看一下结果:

这就是thinkphp中ajax的用法,非常方便实用。

二、session在thinkphp中的使用,用于验证用户是否登录:

在thinkphp中session不用手动开启,默认就是开启的:

首先在Cotroller文件夹内建一个LoginController.class.php

<?php
namespace Home\\Controller;
use Think\\Controller;
class LoginController extends Controller{
    public function login(){
        if(empty($_POST)){
            $this->show();
        }
        else{
            $uid = $_POST["uid"];
            $pwd = $_POST["pwd"];
            $n=M("users");
            $arr = $n->find($uid);
            if($arr["pwd"]==$pwd && !empty($pwd)){//验证密码
                session("uid","$uid");
            }
            else{
                echo "登录失败";
            }
        }
    }
}

然后在View文件夹下新建一个login.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>
<script src="__ROOT__/Public/js/jquery-3.2.0.min.js"></script>
</head>

<body>
  <h1>登录页面</h1>
    <form action="__ACTION__" method="post">
        <div>用户名:<input type="text" name="uid"></div>
        <div>密码:<input type="password" name="pwd"></div>
        <input type="submit" value="登录">
    </form>
</body>
</html>

 然后最关键的是需要建立一个父类BaseController.class.php:

<?php
namespace Home\\Controller;
use Think\\Controller;
class BaseController extends Controller{
    public function __construct(){
        //调用父类构造
        parent::__construct();
        //写session控制
        if(session("?uid")){
        }else{
            $this->redirect("Login/login");
        }
    }
}

然后我们其他所有的控制器都继承新建的这个BaseController就可以了:

<?php
namespace Admin\\Controller;
use Home\\Controller\\BaseController;
class IndexController extends BaseController{
    public function index(){
        echo "欢迎使用Thinkphp";
    }
        public function ceshi(){
            $this->show();
        }
        public function shuju(){
                $n = M("leibie");//创建leibie表模型
                $arr = $n->select();
                $this->ajaxReturn($arr);//调该方法返回数据,如果是字符串,后边加eval
        }
            }

 

以上是关于tthinkphp对于ajax的调用及session的用法的主要内容,如果未能解决你的问题,请参考以下文章

ajax对象。同步与异步及ajax发送请求

jeesite中角色分配详解及改为ajax调用

jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法

Javascript调用C#后台方法及JSon解析

关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案

关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案