ThinkPHP+JQuery实现ajax无刷新登录验证

摘要:

使用原生javascript进行ajax实现无刷新更改页面内容的复杂性尽人皆知,而jquery对ajax传递进行了封装和优化,因此通过jquery进行ajax的参数传递无疑是很好的选择。本文主要内容为thinkphp结合jquery实现登录验证的无刷新,并可以应用到其他方面。


目录:

  1. jquery实现ajax参数传递的三种方式。
  2. thinkphp中ajaxReturn的取舍问题
  3. 通过外部js映入ajax验证并实现验证功能
  4. 基本验证原理
  5. 相关问题阐述
  • ajax返回内容的选择
  • jquery ready()函数探究
  • 无刷新后ajax失效问题
  • thinkphp路径问题

一、jquery传递ajax参数的三种方式

第一种:load()

$(selector).load(URL,data,callback);

load() 方法从服务器加载数据,并把返回的数据放入被选元素中。

参数说明:

  • ​URL:必选参数,用于服务器地址
  • data:可选,用于发送数据
  • callback:函数,用于数据返回处理
第二种:$.get()
$.get(URL,callback);
$.get()方法只用于取数据,不用于传输参数。

参数说明:

  • ​URL:必选参数,用于服务器地址
  • callback:函数,用于数据返回处理
第三种:$.post()
$.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呢?
个人建议:使用ajaxReturn来返回数据。
  • 使用ajaxReturn可以返回四种格式数据,分别是json,jsonp,xml,eval
  • 使用ajaxRetuen在返回数据中可以进行data[]封装

三、通过外部js映入ajax验证并实现验证功能
代码说明:
  • index.html   (页面)
  • indexAjax.js (ajax调用)
  • IndexController.class.php (逻辑)
index.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> <!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> 
indexAjax.js 
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(){// 事件逻辑})
新版本推荐用on的方式,document尽量是要绑定事件的最小包含元素,比如父元素,这样性能会更好,selector则是要绑定元素的选择器。
4、ThinkPHP路径:
js中需要进行URL的获取,否则ajax参数传递地址无法获得、
ThinkPHP推荐使用模板替换,一种方案是:
在     <script src="__PUBLIC__/indexAjax.js"></script>之前定义变量 APPURL
这样在js中就可以使用    APPURL+”/Home/User/Check“;   作为处理地址。

以上为关于ThinkPHP进行ajax无刷新验证的相关总结。
有任何疑问或指正,请在下方评论。
谢谢。
postbird
http://www.ptbird.cn
There I am , in the world more exciting!

ThinkPHP+JQuery实现ajax无刷新登录验证(详解+相关问题)相关推荐

  1. ajax无刷新留言板远吗,基于jquery实现ajax无刷新评论

    基于jquery实现ajax无刷新评论 发布于 2017-03-31 11:26:07 | 75 次阅读 | 评论: 0 | 来源: 网友投递 jQuery javascript框架jQuery是一个 ...

  2. python编写一个登陆验证程序_Python实现简单登录验证详解

    本文实例为大家分享了简单的Python登录验证,供大家参考,具体内容如下 编写登录接口 要求:1.输入用户名密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 #coding=utf-8 __aut ...

  3. ssh无密登录配置详解(hadoop集群搭建)

    ssh无密登录原理 Hadoop集群搭建时,配置ssh是给yarn用的,最好先清空.ssh目录下的文件,再生成密钥,在节点中含有resourcemanager的服务器(有多个resourcemanag ...

  4. php 请求拦截,解决拦截器对ajax请求的拦截实例详解

    解决拦截器对ajax请求的的拦截 拦截器配置:public boolean preHandle(HttpServletRequest request, HttpServletResponse resp ...

  5. thinkphp ajax 无刷新分页效果的实现

    思路:先做出传统分页效果,然后重新复制一份Page.class.php类,对它进行修改,把js中的函数传到page类中,把上一页.下一页.首页.尾页.链接页中的url地址改成js控制的函数,模板页面中 ...

  6. JQUERY AJAX无刷新异步上传文件

    AJAX无刷新上传文件并显示 http://blog.csdn.net/gao3705512/article/details/9330637?utm_source=tuicool jQuery For ...

  7. ajax和php二级联动,jQuery+php+mysql,轻松实现ajax无刷新省市二级联动[多图]

    jQuery+php+mysql,轻松实现ajax无刷新省市二级联动[多图] 08-15栏目:技术 TAG:zxfy zxfy 用jQuery的ajax方法,结合PHP,轻松实现省市级的二级联动: h ...

  8. 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& ...

  9. html5拖拽图片批量ajax无刷新进度上传

    1.前端拖拽图片 之前有篇文章说到HTML5的拖拽(drag.drop,详见:/post/jquery-plugin-1-jquery-drag-and-html5-draggable-api-and ...

最新文章

  1. Sourse Insight使用教程及常见的问题解决办法
  2. 装箱---一个工厂制造的产品形状都是长方体,它们的高度都是 h,长和宽都相等,一共有六个型号,他们的长宽分别为 1*1, 2*2, 3*3, 4*4, 5*5, 6*6.
  3. jquery--- 属性和样式的操作 设置和获取HTML、文本和值、焦点事件
  4. MYSQL中where子句与having子句的区别
  5. [SHOI2008]cactus仙人掌图
  6. XML解析之JAXP案例详解
  7. Android 系统(160)---Android 32/64 bits 升级准则
  8. oracle9i 查询scn,在oracle10g 10.2.0.1上测试不完全恢复_recover database until scn
  9. 吴恩达机器学习学习笔记第四章:python的配置
  10. mysql 创建数据库文件_mysql数据库的文件创建方式 - mysql数据库栏目 - 自
  11. wcf 接收post数据_简单聊下HTTP中POST和GET请求本质区别
  12. TTL转USB 六合一
  13. php下载Excel背景颜色设置,phpExcel生成的Excel背景填充色变黑
  14. 有什么可以赚钱的副业?日入300元就靠这几个副业!
  15. B区路上看到了美女。。。
  16. python字符串分片_Python第六章字符串ppt
  17. 薅羊毛常见问题合集——更新中
  18. html银白色,纯CSS打造银色MacBookAir(二)_html/css_WEB-ITnose
  19. 算法-二叉树:合并两颗二叉树
  20. 首发 | 杭派工程师五年生存现状报告

热门文章

  1. 橙色优学案例:悬浮手表海报设计简易教程
  2. 微信小程序实现上传图文贴
  3. sql 查询时间最大的值
  4. three.js用awsd控制旋转()
  5. 服务器升级debian9_如何在Debian 9上设置PageKite前端服务器
  6. 九城今晚关闭魔兽世界 四年来首次全线停服
  7. 数字图像偏色检测及其校正快速实现
  8. CTF比赛中常见的MISC解题方法
  9. 为什么电脑老是锁定计算机,Win7锁定计算机快捷键是什么 快捷锁定方法
  10. Matting(抠图)--用深度学习自动去除照片背景