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 相关文章推荐
discuz Passport 通行证 整合笔记
Jun 30 PHP
PHP通过正则表达式下载图片到本地的实现代码
Sep 19 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
php实现加减法验证码代码
Feb 14 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
Jun 12 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
PHP使用memcache缓存技术提高响应速度的方法
Dec 26 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
Dec 27 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
xss文件页面内容读取(解决)
2010/11/28 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
Vue计算属性的使用
2017/08/04 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
Python中使用动态变量名的方法
2014/05/06 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
python机器学习之神经网络(二)
2017/12/20 Python
Python合并多个Excel数据的方法
2018/07/16 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
“学雷锋活动月”总结
2014/03/09 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
悬空寺导游词
2015/02/05 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
Python time库的时间时钟处理
2021/05/02 Python
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python