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 相关文章推荐
PHP 文件上传功能实现代码
Jun 24 PHP
php面向对象全攻略 (十六) 对象的串行化
Sep 30 PHP
PHP下利用header()函数设置浏览器缓存的代码
Sep 01 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 PHP
php将gd生成的图片缓存到memcache的小例子
Jun 05 PHP
浅谈json_encode用法
Mar 05 PHP
php三种实现多线程类似的方法
Oct 30 PHP
Yii开启片段缓存的方法
Mar 28 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
Oct 13 PHP
YII框架中搜索分页jQuery写法详解
Dec 19 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
Apr 01 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 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小技巧 把数组的键和值交换形成了新的数组,查找值取得键
2011/06/02 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
PDO实现学生管理系统
2020/03/21 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
javascript demo 基本技巧
2009/12/18 Javascript
两个Javascript小tip资料
2010/11/23 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
使用Python写一个小游戏
2018/04/02 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
详解python中@的用法
2019/03/27 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
摄影助理岗位职责
2014/02/07 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
父亲节活动总结
2015/02/12 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL