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 相关文章推荐
PHP4实际应用经验篇(3)
Oct 09 PHP
IIS下配置Php+Mysql+zend的图文教程
Dec 08 PHP
PHP操作文件方法问答
Mar 16 PHP
php中json_encode中文编码问题分析
Sep 13 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
PHP连接操作access数据库实例
Mar 30 PHP
PHP+jQuery翻板抽奖功能实现
Oct 19 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
PHP实现的进度条效果详解
May 03 PHP
PHP使用ActiveMQ实现消息队列的方法详解
May 31 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
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
gulp解决跨域的配置文件问题
2017/06/08 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
Python的print用法示例
2014/02/11 Python
Python中给List添加元素的4种方法分享
2014/11/28 Python
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
python文件操作相关知识点总结整理
2016/02/22 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers