Die Ajax-Methode wird in Thinkphp auf die gleiche Weise verwendet wie PHP Ajax. Der Unterschied besteht darin, dass die URL in PHP auf eine Operationsmethode verweist kann Ajax verwenden, um die angegebenen Daten zurückzugeben, den Rückgabedatentyp zu ändern usw.
Die Betriebsumgebung dieses Artikels: Windows 10-System, ThinkPHP Version 5, Dell G3-Computer.
Verwenden Sie die Ajax-Methode in thinkphp
Die Verwendung von Ajax in thinkphp ist dasselbe wie die Verwendung von Ajax zuvor. Der Unterschied besteht darin, dass die URL im vorherigen Ajax auf eine Seite verweist und die Die URL in thinkphp muss auf eine Aktionsmethode verweisen.
1. Thinkphp verwendet Ajax, um Daten zurückzugeben
1. Schreiben Sie zunächst eine Methode in AdminControllerMainController.php
public function testajax()//ajax测试方法 { $this->show(); }
2 Die Ajax-Verarbeitungsmethode in AdminControllerMainController.class.php
<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>
4 Auf diese Weise werden die Daten auf der Seite angezeigt
2. Änderung des von Ajax zurückgegebenen Datentyps. In thinkphp gibt Ajax JSON-Daten zurück Standardmäßig können Sie Folgendes festlegen: DEFAULT_AJAX_RETURN. Die Einstellungsmethode lautet wie folgt: Wenn es sich um den XML-Modus handelt, werden die Daten automatisch in eine XML-Zeichenfolge codiert.Beispiel:
public function ajaxchuli() { $n = D("Nation");//造一个nation表的模型对象 $attr = $n->select(); $this->ajaxReturn($attr);//ajax返回数据的方式,用ajaxReturn。 }
// 指定XML格式返回数据 $data['status'] = 1; $data['content'] = 'content'; $this->ajaxReturn($data,'xml');
3 Verwenden Sie Ajax und erstellen Sie (automatisches Erfassungsformular), um Daten zur Datenbank hinzuzufügen
1. Schreiben Sie zuerst die Zugriffsmethodepublic function ajaxchuli() { $this->ajaxReturn("hello","eval");//将返回数据的类型更改成字符串 }
<script type="text/javascript"> $.ajax({ url:"__CONTROLLER__/ajaxchuli",//这里指向的就不再是页面了,而是一个方法。 data:{}, type:"POST", dataType:"TEXT", success: function(data){ alert(data);//输出结果就是hello } }) </script>
public function addajax() { $this->show(); }
<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>
(2) Kopieren Sie Page.class.php in thinkphpApplicationHomelibs;
(4) Ändern Sie Zeile 57 in der Datei Page.class.php $this->limit = "LIMIT".$this->setLimit(); und entfernen Sie „LIMIT“;5 der Zeichenfolge
1. Die gekapselte Methode ist im selben Controller geschriebenpublic function addchuli() { $n = D("Nation"); $n->create();//自动收集表单 $r = $n->add();//调用添加的方法 if($r) { $this->ajaxReturn("OK","eval");//如果添加成功输出“OK”,eval代表数据类型为字符串。 } else { $this->ajaxReturn("NO","eval");//如果添加失败,就输出”NO“。 } }
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();//调用显示方法在显示页面显示。 }
<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>
"LOAD_EXT_FILE"=>"functions",//Laden Sie automatisch die Funktionsbibliotheksklasse
Nach diesem Code lesen Sie die Länge der Zeichenfolge.6. Automatisch feststellen, ob die Sitzung vorhanden ist
(1) Wird zum Speichern des Benutzernamens und anderer Informationen verwendet.
Vorherige Methode: Auf jeder Seite oder Methode muss festgestellt werden, ob die Sitzung vorhanden ist.
(1) Erstellen Sie eine Fucontroller-Klasse, um festzustellen, ob die Sitzung vorhanden ist.
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) Schreiben Sie eine Testmethode. Beachten Sie, dass die geerbte übergeordnete Klasse FuController und nicht Controller ist. Wenn Sie diese Seite zum ersten Mal besuchen, springen Sie zur Anmeldemethode. Da es keinen Sitzungswert gibt, wird der obige $this->redirect("Home/Login/login",array(),5,'Bitte melden Sie sich an ') wird ausgeführt. ;
public function test() { $str = "volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。在控制器中首先对模版赋值:";//给str一个字符串 $m = A("Main");//造一个Main控制器的对象 echo ChangDu($str);//输出$str的长度 }
(3) Schreiben Sie eine Anmeldemethode. Die obige Testmethode speichert die Sitzung, nachdem sie zur Anmeldemethode gesprungen ist. Wenn die Testmethode erneut verwendet wird, wird die Länge der Zeichenfolge angezeigt. Aufgrund des Sitzungswerts wird die Testmethode weiterhin ausgeführt.
<?php function ChangDu($str) { return strlen($str); } ?>
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonVerwenden Sie die Ajax-Methode in thinkphp?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!