ThinkPHP+JQuery实现ajax无刷新登录验证(详解+相关问题)
ThinkPHP+JQuery实现ajax无刷新登录验证
摘要:
使用原生javascript进行ajax实现无刷新更改页面内容的复杂性尽人皆知,而jquery对ajax传递进行了封装和优化,因此通过jquery进行ajax的参数传递无疑是很好的选择。本文主要内容为thinkphp结合jquery实现登录验证的无刷新,并可以应用到其他方面。
目录:
- jquery实现ajax参数传递的三种方式。
- thinkphp中ajaxReturn的取舍问题
- 通过外部js映入ajax验证并实现验证功能
- 基本验证原理
- 相关问题阐述
- ajax返回内容的选择
- jquery ready()函数探究
- 无刷新后ajax失效问题
- thinkphp路径问题
一、jquery传递ajax参数的三种方式
第一种:load()
$(selector).load(URL,data,callback);
load() 方法从服务器加载数据,并把返回的数据放入被选元素中。
参数说明:
- URL:必选参数,用于服务器地址
- data:可选,用于发送数据
- callback:函数,用于数据返回处理
$.get(URL,callback);
参数说明:
- URL:必选参数,用于服务器地址
- callback:函数,用于数据返回处理
$.post(URL,data,callback);
.post() 方法通过 HTTP POST 请求从服务器上请求数据。
参数说明:
- URL:必选参数,用于服务器地址
- data:可选,用于发送数据
- callback:函数,用于数据返回处理
如果是取简单的页面,则使用get load都可以,由于需要进行登录验证等操作,所以最好选用post方法。
二、是否使用ThinkPHP中的ajaxReturn()
$this->ajaxReturn(data,info);
- 我们都知道,ajax返回数据的页面不能有输出,否则会将输出一起返回,或者将静态页面返回,因此返回数据的正确决定了应用能正确运行。
- 第一次使用ajax的时候,就是返回一堆静态页面,包括从数据库返回的崩溃信息,因此颇为头疼。
- ThinkPHP对ajax进行了数据的封装优化,创造了ajaxReturn函数,在返回数据的确保数据的正确性,但是经过测试发现,当从数据库返回信息崩溃之后,返回的信息依旧是崩溃的错误页面的信息,这一点抓包就能看到。
- 使用ajaxReturn可以返回四种格式数据,分别是json,jsonp,xml,eval
- 使用ajaxRetuen在返回数据中可以进行data[]封装
三、通过外部js映入ajax验证并实现验证功能
- index.html (页面)
- indexAjax.js (ajax调用)
- IndexController.class.php (逻辑)
<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>AjaxTest</title><script>var appUrl="__APP__";/*通过定义APP,获取APP地址在JS中使用!常量的定义必须在indexAjax.js前面,不然失效!*/</script><script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.js"></script><script src="__PUBLIC__/indexAjax.js"></script></head><body><form ><label for="name">Name:</label><input type="text" name="name" value="" id="name"><label for="password">Password:</label><input type="password" name="password" value="" id="password"><input type="button" id="submitButton" value="登录"></form><hr> <h1 id="loginSuccess">Login Success!!</h1><h1 id="loginError">Login Error!!</h1><!--初始隐藏--></body></html> <!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>AjaxTest</title><script>var appUrl="__APP__";/*通过定义APP,获取APP地址在JS中使用!常量的定义必须在indexAjax.js前面,不然失效!*/</script><script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.js"></script><script src="__PUBLIC__/indexAjax.js"></script></head><body><form ><label for="name">Name:</label><input type="text" name="name" value="" id="name"><label for="password">Password:</label><input type="password" name="password" value="" id="password"><input type="button" id="submitButton" value="登录"></form><hr> <h1 id="loginSuccess">Login Success!!</h1><h1 id="loginError">Login Error!!</h1><!--初始隐藏--></body></html>
jQuery(document).ready(function() {$('#loginSuccess').hide();$('#loginError').hide();var postUrl=appUrl+"/Home/Index/test";//通过前面定义的变量获取地址$('#submitButton').click(function(){// $.post('d1',{json:数据},{回调函数});//post可以传递json数据,如下:$.post(postUrl,{'name':$("#name").val(),'password':$("#password").val()},function(data){/*data是返回的值*/if(data.flag==1){//返回的是json数据,详细看php代码$('#loginSuccess').fadeIn();$('#loginError').fadeOut();}else{$('#loginError').fadeIn();$('#loginSuccess').fadeOut();}});});});
indexController.class.php
<?php
namespace Home\Controller;
use Think\Controller;class IndexController extends Controller {public function index(){$this->display('index');}public function test(){$name=$_POST['name'];$password=$_POST['password'];$arr['flag']=0;if($name=='postbird'){if($password=='123456'){$arr['flag']=1;//进行数据封装$this->ajaxReturn($arr,json);}else{$this->ajaxReturn($arr,json);//返回json数据}}else{$this->ajaxReturn($arr,json);}}}
2)、1.7版本后jQuery废除了live事件,而是采用了统一的api方式,这样对程序开发人员来说是个好消息,不用记那么多api了,统一用on的方式调用
<pre name="code" class="javascript">$(document).on("click", selector, function(){// 事件逻辑})
以上为关于ThinkPHP进行ajax无刷新验证的相关总结。有任何疑问或指正,请在下方评论。谢谢。postbirdhttp://www.ptbird.cnThere I am , in the world more exciting!
ThinkPHP+JQuery实现ajax无刷新登录验证(详解+相关问题)相关推荐
- ajax无刷新留言板远吗,基于jquery实现ajax无刷新评论
基于jquery实现ajax无刷新评论 发布于 2017-03-31 11:26:07 | 75 次阅读 | 评论: 0 | 来源: 网友投递 jQuery javascript框架jQuery是一个 ...
- python编写一个登陆验证程序_Python实现简单登录验证详解
本文实例为大家分享了简单的Python登录验证,供大家参考,具体内容如下 编写登录接口 要求:1.输入用户名密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 #coding=utf-8 __aut ...
- ssh无密登录配置详解(hadoop集群搭建)
ssh无密登录原理 Hadoop集群搭建时,配置ssh是给yarn用的,最好先清空.ssh目录下的文件,再生成密钥,在节点中含有resourcemanager的服务器(有多个resourcemanag ...
- php 请求拦截,解决拦截器对ajax请求的拦截实例详解
解决拦截器对ajax请求的的拦截 拦截器配置:public boolean preHandle(HttpServletRequest request, HttpServletResponse resp ...
- thinkphp ajax 无刷新分页效果的实现
思路:先做出传统分页效果,然后重新复制一份Page.class.php类,对它进行修改,把js中的函数传到page类中,把上一页.下一页.首页.尾页.链接页中的url地址改成js控制的函数,模板页面中 ...
- JQUERY AJAX无刷新异步上传文件
AJAX无刷新上传文件并显示 http://blog.csdn.net/gao3705512/article/details/9330637?utm_source=tuicool jQuery For ...
- ajax和php二级联动,jQuery+php+mysql,轻松实现ajax无刷新省市二级联动[多图]
jQuery+php+mysql,轻松实现ajax无刷新省市二级联动[多图] 08-15栏目:技术 TAG:zxfy zxfy 用jQuery的ajax方法,结合PHP,轻松实现省市级的二级联动: h ...
- JQuery 总结(8)Ajax 无刷新技术
Ajax 无刷新技术 [ 有get 和post 一一对应] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 $(".delete& ...
- html5拖拽图片批量ajax无刷新进度上传
1.前端拖拽图片 之前有篇文章说到HTML5的拖拽(drag.drop,详见:/post/jquery-plugin-1-jquery-drag-and-html5-draggable-api-and ...
最新文章
- Sourse Insight使用教程及常见的问题解决办法
- 装箱---一个工厂制造的产品形状都是长方体,它们的高度都是 h,长和宽都相等,一共有六个型号,他们的长宽分别为 1*1, 2*2, 3*3, 4*4, 5*5, 6*6.
- jquery--- 属性和样式的操作 设置和获取HTML、文本和值、焦点事件
- MYSQL中where子句与having子句的区别
- [SHOI2008]cactus仙人掌图
- XML解析之JAXP案例详解
- Android 系统(160)---Android 32/64 bits 升级准则
- oracle9i 查询scn,在oracle10g 10.2.0.1上测试不完全恢复_recover database until scn
- 吴恩达机器学习学习笔记第四章:python的配置
- mysql 创建数据库文件_mysql数据库的文件创建方式 - mysql数据库栏目 - 自
- wcf 接收post数据_简单聊下HTTP中POST和GET请求本质区别
- TTL转USB 六合一
- php下载Excel背景颜色设置,phpExcel生成的Excel背景填充色变黑
- 有什么可以赚钱的副业?日入300元就靠这几个副业!
- B区路上看到了美女。。。
- python字符串分片_Python第六章字符串ppt
- 薅羊毛常见问题合集——更新中
- html银白色,纯CSS打造银色MacBookAir(二)_html/css_WEB-ITnose
- 算法-二叉树:合并两颗二叉树
- 首发 | 杭派工程师五年生存现状报告