十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍“thinkphp中如何使用ajax方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“thinkphp中如何使用ajax方法”文章能帮助大家解决问题。
目前成都创新互联公司已为成百上千家的企业提供了网站建设、域名、网站空间、绵阳服务器托管、企业网站设计、眉山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
thinkphp中使用ajax方法;thinkphp使用ajax和PHP使用ajax的方法一样,不同点在于PHP的ajax中的url指向了一个页面,而thinkphp里面的url需要指向一个操作方法,可以利用ajax返回指定的数据,返回数据类型的修改等。
本文操作环境:Windows10系统、ThinkPHP5版、Dell G3电脑。
thinkphp中使用ajax方法
thinkphp使用ajax和之前使用ajax的方法一样,不同点在于之前的ajax中的url指向了一个页面,而thinkphp里面的url需要指向一个操作方法。
一、thinkphp使用ajax返回数据
1.先在AdminControllerMainController.class.php里面写一个方法
public function testajax()//ajax测试方法 { $this->show(); }
2.在AdminViewMain文件夹里面建对应的显示页面testajax.html
无标题文档
3.在AdminControllerMainController.class.php里面写ajax处理的方法
public function ajaxchuli() { $n = D("Nation");//造一个nation表的模型对象 $attr = $n->select(); $this->ajaxReturn($attr);//ajax返回数据的方式,用ajaxReturn。 }
4.这样就把数据显示在了页面
二、ajax返回数据类型的修改
在thinkphp中ajax默认的是返回JSON数据,可以通过配置DEFAULT_AJAX_RETURN进行设置,设置方式如下
// 指定XML格式返回数据 $data['status'] = 1; $data['content'] = 'content'; $this->ajaxReturn($data,'xml');
如果是XML方式,会自动编码成XML字符串,如果是EVAL方式的话,只会输出字符串data数据。
示例:
public function ajaxchuli() { $this->ajaxReturn("hello","eval");//将返回数据的类型更改成字符串 }
同时也要讲ajax里面的数据类型改为TEXT
三、用ajax和create(自动收集表单)向数据库中添加数据
1.先写访问的方法
public function addajax() { $this->show(); }
2.写访问的页面
代号:名称:
3.写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“。 } }
四、thinkphp中用ajax做分页。主要注意第三方类怎么引用。
1.先做一个方法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.做显示页面
代号 | 名称 | 父级代号 |
{$v.areacode} | {$v.areaname} | {$v.parentareacode} |
3.Page.class.php需要更改的地方
(1)文件名原来为page.class.php需要改为Page.class.php,要和类名保持一致;
(2)把Page.class.php复制到thinkphpApplicationHomelibs里面;
(3)namespace Homelibs;加上命名空间。
(4)修改Page.class.php文件中的第57行$this->limit = "LIMIT ".$this->setLimit();,将 "LIMIT ".去掉;
五、输出字符串的长度
1.封装的方法写在同一个控制器里面
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.封装的方法不在同一个控制器里面
(1)在Maincontroller.class.php里面只写下面的方法
public function test() { $str = "volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。在控制器中首先对模版赋值:";//给str一个字符串 $m = A("Main");//造一个Main控制器的对象 echo ChangDu($str);//输出$str的长度 }
(2)在thinkphpApplicationHome里面写封装的方法functions.php,内容如下
(3)这样写完以后在浏览器中输入http://localhost/thinkphp/index.php/Home/Main/test读取不到字符串的长度,还需要在配置文件里面加上一句代码:
"LOAD_EXT_FILE"=>"functions",//自动加载函数库类
家还是那个这句代码后才能读取到字符串的长度。
六、自动判断session是否存在
1.session的用途
(1)用来存用户名等信息;
(2)防止跳过登录;
2.如果按照以前的方式,在每个页面或者方法里面都要判断session是否存在。
(1)造一个Fucontroller类,用来判断session是否存在。
redirect("Home/Login/login",array(),5,'请登录');//第一个参数是跳转的地址,第二个参数是要传的值,第三个参数是跳转的时间,第四个参数是跳转时的提示信息。 exit; } } } ?>
(2)写一个test方法,注意继承的父类是FuController,而不是Controller。第一次走这个页面时会跳转到login方法里面,因为没有session值,会执行上面的$this->redirect("Home/Login/login",array(),5,'请登录');
(3)写一个login方法。上面的test方法跳转到login方法以后会存上session,再走test方法就会出现字符串的长度,因为有了sesion值,test方法会继续往下执行。
关于“thinkphp中如何使用ajax方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。