thinkphp中ajax与php响应过程详解


Posted in PHP onDecember 08, 2014

本文实例分析了thinkphp中ajax与php响应过程。分享给大家供大家参考。具体分析如下:

一般将前台页面搜索结果中,不喜欢的内容(链接),删除掉,因为整个网站的编程框架式thinkphp,运用js中的ajax对页面进行响应,调用后台php接口,实现前台和后台数据库的同时更新.

首先我们需要做的就是在前台页面中添加一个文本“删除”,可以这么添加:

<a href="javascript:void(0);" id= "<php>echo $val[id]</php>" class="delete" >删除</a>

上面的html代码的意思:就是给删除添加一个href,这个href是个js函数,类似于超链接的作用,当然对于我这样的新手在刚开始的时候会有疑惑,我们平时的超链接不是这样的,网页中很多的javascript:void(0),那程序怎么知道用户点击删除后,会响应其真正对应的js函数呢?别急,这就是为什么会为删除添加id以及class这样的标签,相信我把js中的代码公布出来以后你就会明白了,代码如下:

jQuery(".list a.delete").click(function(){

            if(confirm("你确定要删除吗?")){

                var _this=this;

                var id = jQuery(_this).attr("id");

                jQuery.ajax({

                    url : '/Search/index.php/Jason/delete?',

                    data : {'id':id},

                    dataType : 'json',

                    success : function(data){

                        var del = data.del;

                        if(del == 1){//删除成功

                            jQuery("#"+id).parents(".list").remove();

                        }else{//删除失败

                            alert("删除失败");

                        }

                    }

                });

            }

});

大家看函数的头部:jQuery(".list a.delete").click(),jQuery后面的标签是很重要的,这就保证了jquery很准确的响应页面中用户点击的“位置”,添加的事件为click(),在click里添加响应事件的代码:var id = jQuery(_this).attr("id");获取a对应的id,因为这个id是我们删除数据库时用到的链接id,当然这种直接明文的方式不好,在这里只是介绍整个响应过程。调用ajax,实现异步的运行整个过程。我们设置了js接受的是json串,这里的方式应该有很多种吧,我没有去尝试,大家要是有兴趣可以自行尝试一下。/Search/index.php/Jason/delete?这句话就是js去请求php的接口,php接口对用的代码如下:

注意ajax在求php接口时的路径,也就是delete函数必须放在JasonAction.class.php中,此例子是必须这样的:

public function delete(){  

        if($this->isGet()){  

            $userId = session("uid");//用户登录  

            if(!empty($userId)){  

                $a = M('***');  

                $id = $this->_get('id');  

                $result=$a->where("id=$id")->delete();//删除  

                if($result > 0){  

                    $arr = array("del"=>'1');  

                }else{  

                    $arr = array("del"=>'0');  

                }  

                $json_str = json_encode($arr);  

                echo $json_str;//返回给js  

            }  

        }  

}

相信大家对上面的代码不会陌生吧,整个过程都是thinkphp框架内部配置完毕的.

var del = data.del;这句是接受php代码返回来的json串中del这个key的value,进而在前台进行页面更新和响应.

if(del == 1){//删除成功  

     jQuery("#"+id).parents(".list").remove();//这句话就是后台删除成功后,直接在前台对响应的div进行删除,这样性能就会很快,无需进行后台数据的重新提取至前台页面中,  

 }else{//删除失败  

     alert("删除失败");  

}

整个响应的过程就是这样,至于效果优化,是优化和细化方面的问题,后来,身边的同事又告诉我前台移除响应链接的另一个动态效果:

即将:

jQuery("#"+id).parents(".list").remove();
替换为:
jQuery("#"+id).parents(".list").slideUp("slow", function(){  

      jQuery(this).remove();  

});

大家不妨试试效果,很不错的,好了,响应过程记载完毕,只是自己的个人见解和认知.

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
教你如何把一篇文章按要求分段
Oct 09 PHP
php的access操作类
Apr 09 PHP
PHP 批量删除 sql语句
Jun 05 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
从wamp到xampp的升级之路
Apr 08 PHP
php一个文件搞定微信jssdk配置
Dec 12 PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 PHP
php注册审核重点解析(数据访问)
May 23 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
tp5 实现列表数据根据状态排序
Oct 18 PHP
PHP用swoole+websocket和redis实现web一对一聊天
Nov 05 PHP
一款简单实用的php操作mysql数据库类
Dec 08 #PHP
php表单敏感字符过滤类
Dec 08 #PHP
php网页病毒清除类
Dec 08 #PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 #PHP
简单实用的PHP防注入类实例
Dec 05 #PHP
ThinkPHP连接数据库的方式汇总
Dec 05 #PHP
PHP生成RSS文件类实例
Dec 05 #PHP
You might like
Apache2 httpd.conf 中文版
2006/12/06 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
2007/09/24 PHP
php 接口类与抽象类的实际作用
2009/11/26 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
详解Python中的array数组模块相关使用
2016/07/05 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Win8下python3.5.1安装教程
2020/07/29 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
详解Python3定时器任务代码
2019/09/23 Python
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
.NET remoting中对象激活的两种方式
2015/06/08 面试题
上班玩游戏检讨书
2014/02/07 职场文书
创先争优标语
2014/06/27 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
贷款收入证明范本
2015/06/12 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL