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 socket的讲解与实例分析
Jun 13 PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
ThinkPHP查询语句与关联查询用法实例
Nov 01 PHP
PHP中创建图像并绘制文字的例子
Nov 19 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
简单的pgsql pdo php操作类实现代码
Aug 25 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
PHP从尾到头打印链表实例讲解
Sep 27 PHP
PHP生成zip压缩包的常用方法示例
Aug 22 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 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
example2.php
2006/10/09 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
syntaxhighlighter 使用方法
2007/07/02 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
Django保护敏感信息的方法示例
2019/05/09 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
化学相关工作求职信
2013/10/02 职场文书
实习单位评语
2014/04/26 职场文书
平遥古城导游词
2015/02/03 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL