La méthode ajax est utilisée dans thinkphp ; thinkphp utilise ajax de la même manière que PHP utilise ajax. La différence est que l'URL dans l'ajax de PHP pointe vers une page, tandis que l'URL dans thinkphp doit pointer vers une méthode d'opération. peut utiliser ajax pour renvoyer les données spécifiées, modification du type de données de retour, etc.
L'environnement d'exploitation de cet article : système Windows 10, ThinkPHP version 5, ordinateur Dell G3.
Utilisez la méthode ajax dans thinkphp
Utiliser ajax dans thinkphp est la même chose qu'utiliser ajax auparavant. La différence est que l'URL dans l'ajax précédent pointe vers une page et la. L'URL dans thinkphp doit pointer vers une méthode d'action.
1. thinkphp utilise ajax pour renvoyer des données
1 Écrivez d'abord une méthode dans AdminControllerMainController.class.php
public function testajax()//ajax测试方法 { $this->show(); }
2 Créez la page d'affichage correspondante testajax.html dans le dossier AdminViewMain
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="__PUBLIC__/js/jquery-1.11.2.min.js"></script><!--jquery文件放在public/js里面。__PUBLIC__找到public目录--> <title>无标题文档</title> </head> <body> <select id="nation"></select> </body> <script type="text/javascript"> $.ajax({ url:"__CONTROLLER__/ajaxchuli",//这里指向的就不再是页面了,而是一个方法。 data:{}, type:"POST", dataType:"JSON", success: function(data){ //alert(data[0].code);//这里要用索引,使用eq读取不出来数据。 var str=""; for(a in data) { str = str+"<option value='"+data[a].code+"'>"+data[a].name+"</option>"; } $("#nation").html(str); } }) </script>
3. la méthode de traitement ajax dans AdminControllerMainController.class.php
public function ajaxchuli() { $n = D("Nation");//造一个nation表的模型对象 $attr = $n->select(); $this->ajaxReturn($attr);//ajax返回数据的方式,用ajaxReturn。 }
4 De cette façon, les données sont affichées sur la page
2 Modification du type de données renvoyé par ajax
Dans thinkphp, ajax renvoie les données JSON par. par défaut, vous pouvez définir en configurant DEFAULT_AJAX_RETURN. La méthode de configuration est la suivante
// 指定XML格式返回数据 $data['status'] = 1; $data['content'] = 'content'; $this->ajaxReturn($data,'xml');
S'il s'agit du mode XML, elle sera automatiquement codée dans une chaîne XML. S'il s'agit du mode EVAL, seules les données de chaîne seront affichées.
Exemple :
public function ajaxchuli() { $this->ajaxReturn("hello","eval");//将返回数据的类型更改成字符串 }
En même temps, nous devons également changer le type de données dans ajax en TEXT
<script type="text/javascript"> $.ajax({ url:"__CONTROLLER__/ajaxchuli",//这里指向的就不再是页面了,而是一个方法。 data:{}, type:"POST", dataType:"TEXT", success: function(data){ alert(data);//输出结果就是hello } }) </script>
3 Utilisez ajax et créez (formulaire de collecte automatique) pour ajouter des données à la base de données
1. Écrivez d'abord la méthode d'accès
public function addajax() { $this->show(); }
2. Écrivez la page visitée
<body> <div>代号:<input type="tel" id="code" /></div> <div>名称:<input type="tel" id="name" /></div> <div><input type="button" id="btn" value="添加" /></div> </body> <script type="text/javascript"> $("#btn").click(function(){ var code = $("#code").val(); var name = $("#name").val(); $.ajax({ url:"__CONTROLLER__/addchuli", data:{Code:code,Name:name},//要用create方法,这里的列名就要和数据库中的列名一样,这里的首字母要大写。 type:"POST", dataType:"TEXT", success: function(data){ alert(data); } }) }) </script>
3 Écrivez la méthode de traitement ajax
public function addchuli() { $n = D("Nation"); $n->create();//自动收集表单 $r = $n->add();//调用添加的方法 if($r) { $this->ajaxReturn("OK","eval");//如果添加成功输出“OK”,eval代表数据类型为字符串。 } else { $this->ajaxReturn("NO","eval");//如果添加失败,就输出”NO“。 } }
4. Utilisez ajax pour la pagination dans thinkphp. Faites principalement attention à la façon dont les classes tierces sont référencées.
1. Créez d'abord une méthode xianshi();
public function xianshi() { $n = D("chinastates");//造chinastates表的对象 $shuliang = $n->count();//取出数据的总条数 $page = new HomelibsPage($shuliang,15);//将page文件类引入。()里面需要参数,第一个参数是数据的总数量,第二个是每页显示多少条数据。所以上面要先求出数量。 $xinxi = $page->fpage(); $attr = $n->limit($page->limit)->select();//查询出所有数据,limit(0,15),需要修改Page.class.php文件中的第57行$this->limit = "LIMIT ".$this->setLimit();,将 "LIMIT ".去掉,如果不去掉的话,将会显示limit(limit(0,15)),度了1个limit。 $this->assign("shuju",$attr);//将查询出的数据都注入显示页面 $this->assign("xinxi",$xinxi); $this->show();//调用显示方法在显示页面显示。 }
2. Créez la page d'affichage
<body> <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代号</td> <td>名称</td> <td>父级代号</td> </tr> <foreach name="shuju" item="v" > <tr> <td>{$v.areacode}</td> <td>{$v.areaname}</td> <td>{$v.parentareacode}</td> </tr> </foreach> </table> <div>{$xinxi}</div><!--显示分页信息--> </body>
3 Ce qui doit être modifié dans Page.class.php
(1) Le nom du fichier est à l'origine page. class.php. Remplacez-le par Page.class.php, qui doit être cohérent avec le nom de la classe ;
(2) Copiez Page.class.php dans thinkphpApplicationHomelibs ;
(3) espace de noms Homelibs ;
(4) Modifiez la ligne 57 dans le fichier Page.class.php $this->limit = "LIMIT ".$this->setLimit(); et supprimez "LIMIT "
5. de la chaîne
1. La méthode encapsulée est écrite dans le même contrôleur
public function test() { $str = "volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。在控制器中首先对模版赋值:";//给str一个字符串 $m = A("Main");//造一个Main控制器的对象 echo $m->ChangDu($str);//输出$str的长度 } public function ChangDu($str)//ChangDu方法,输出字符串的长度。 { return strlen($str); }
2 La méthode encapsulée n'est pas dans le même contrôleur
(1) Écrivez uniquement ce qui suit dans la méthode Maincontroller.class.php
public function test() { $str = "volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。在控制器中首先对模版赋值:";//给str一个字符串 $m = A("Main");//造一个Main控制器的对象 echo ChangDu($str);//输出$str的长度 }
. (2) Écrivez la méthode encapsulée function.php dans thinkphpApplicationHome avec le contenu suivant
<?php function ChangDu($str) { return strlen($str); } ?>
(3) Après avoir écrit ceci, entrez http://localhost/thinkphp/index.php/Home/Main dans le navigateur /test ne peut pas lire le longueur de la chaîne, et vous devez ajouter un code au fichier de configuration :
"LOAD_EXT_FILE"=>"functions",//Charger automatiquement la classe de la bibliothèque de fonctions
Après ce code pour lire la longueur de la chaîne.
6. Déterminez automatiquement si la session existe
1. Objectif de la session
(1) Utilisé pour stocker le nom d'utilisateur et d'autres informations
(2) Empêcher de sauter la connexion
2. méthode précédente, dans chaque page ou méthode, il faut déterminer si la session existe.
(1) Créez une classe Fucontroller pour déterminer si la session existe.
<?php namespace HomeController; use ThinkController; class FuController extends Controller//造一个FuController类,用来判断session值是否存在。 { public function __construct()//造一个构造函数 { if(session('?uid'))//判断session是否存在,如果存在,什么也不做。 { } else//如果不存在 { //$url = U("Home/Login/login"); $this->redirect("Home/Login/login",array(),5,'请登录');//第一个参数是跳转的地址,第二个参数是要传的值,第三个参数是跳转的时间,第四个参数是跳转时的提示信息。 exit; } } } ?>
(2) Écrivez une méthode de test Notez que la classe parent héritée est FuController, pas Controller. La première fois que vous visitez cette page, vous passerez à la méthode de connexion. Comme il n'y a pas de valeur de session, le $this->redirect("Home/Login/login",array(),5,'Veuillez vous connecter. ') sera exécuté ;
(3) Écrivez une méthode de connexion. La méthode de test ci-dessus enregistrera la session après avoir accédé à la méthode de connexion. Lorsque la méthode de test sera à nouveau utilisée, la longueur de la chaîne apparaîtra. En raison de la valeur de la session, la méthode de test continuera à s'exécuter.
<?php namespace HomeController; use ThinkController; class LoginController extends Controller { public function login() { session("uid","zhangsan");//存一个session值 } } ?>
Apprentissage recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!