之前的表单验证都是用js写的,2 使用ajax提交表单

2019-11-22 05:15 来源:未知

ajax实现登陆表单验证功能,ajax实现表单验证

ajax实现登陆表单验证功能:
使用ajax进行表单登陆验证功能更为的人性化,下面提供一个表单验证的实例代码,代码较为简单,仅仅作为演示之用而已,多实用的ajax表单验证功能都较为复杂。下面分布分出代码:
一.静态页面表单部分代码:

<script type="text/javascript" src="http://www.softwhy.com/mytest/jQuery/jquery-1.8.3.js"></script>
<script type = "text/javascript" src = "jslib/verify.js"></script> 
</ head> 
<body> 
<h1>用户校验</h1> 
<!-- ajax 中可以不用 form 表单的提交 -->
<!--input 标签中不需要用 name 属性,只用 id 属性就行了 -->
<!-- 用 id 属性是为了使用 dom-->
<input type = "text" id = "username" /><br /> 
<input type = "button" value = " 校验 " /> 
<!--div 为空是为了存放服务器返回的信息 -->
<div id="result"></div> 
</body>

注意对jQuery库文件的引用,还有在ajax中可以不用form进行表单提交。
二.verify.js中的代码:

function verify() { 
  var paramObj=encodeURI(encodeURI($( "#username" ).val())); 
  $.get( "TestSvlt?username=" +paramObj, null ,callback); 
} 
function callback(data) { 
  var resultObj=$( "#result" ); 
  resultObj.html(data); 
}

三.创建一个servlet:AjaxLogin 类;在 doGet 方法中写:

response.setContentType( "text/html;charset=utf-8" ); 
PrintWriter out=response.getWriter(); 
String name=request.getParameter( "username" ); 
String username= URLDecoder.decode (name, "UTF-8" ); 
System. out .println(username); 
if( null ==username|| "" .equals(username)) { 
  out.print( "username is not null" ); 
} 
else { 
  if (! "lej" .equals(username)) { 
    out.print(username+ " not existing" ); 
  } 
  else { 
    out.print(username+ " login successs" ); 
  } 
}

原文地址是:

更多内容可以参阅:

ajax实现登陆表单验证功能: 使用ajax进行表单登陆验证功能更为的人性化,下面提供一个表单验...

之前的表单验证都是用js写的,这里也可以使用tp框架的验证。但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降。 

validationEngine给我们为前端的表单验证减少了很大的工作量.大部分情况我们使用validationEngine验证表单的形式有几种方式:

凯时国际ag下载,  自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。验证的代码要写在模型层即Model里面。

1 使用正常的表单提交.这种情况validationEngine验证不通过是不会提交表单的.

  数据验证有两种方式:

2 使用ajax提交表单,但是没有使用ajax验证.

静态方式:在模型类里面通过$_validate属性定义验证规则。静态方式定义好以后其它地方都可以使用。

         这种方式也比较简单,在我们使用ajax请求前检查验证是否通过就可以,例如:

动态方式:使用模型类的validate方法动态创建自动验证规则。动态方式比较灵活,哪里使用就写,其它地方不可以使用。

复制代码 代码如下:

无论是什么方式,验证规则的定义是统一的规则,定义格式为:

//验证不通过时return 
    if(!$("form#ajaxForm").validationEngine("validate")) return ; 
    $.ajax({ 
       type: "POST", 
       url: $("#ajaxForm").attr("action"), 
       data: $("#ajaxForm").serialize(), 
       dataType: "html", 
       success: function(data){ 
          xxxx     } 
    }); 

<?php
namespace HomeController;
use ThinkController;
class TestController extends Controller
{
public function add()
{
if(empty($_POST))
{ 
$this->show();
}
else
{ 
$y=new HomeModelYongHuuModel();
$r=$y->create();
if($r)
{
$y->add(); 
}
else{
die($y->getError());
}
}
} 
}

3 使用正常表单提交,但是有使用ajax验证,这种方式有点让人纠结了.当我们提交表单时ajax验证不通过也能提交表单,关于这种情况,网上很多例子是改源码的,下面是截图:

2.在thinkphpApplicationHomeViewTest写上对应的html文件

.这种方法对于目前这种情况可行,这种修改的方式本身就不建议,可能对其它地方产生影响.我发现的其中一个就是当下面这种情况时:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<style type="text/css">
*{ font-family:微软雅黑; padding:0px; margin:0px auto}
</style>
<body>
<form action="__ACTION__" method="post">
<div>用户名:<input type="text" name="uid" /></div>
<div>密码:<input type="text" name="pwd" /></div>
<div>确认密码:<input type="text" name="pwd1" /></div>
<div>姓名:<input type="text" name="name" /></div>
<div>邮箱:<input type="text" name="email" /></div>
<div>年龄:<input type="text" name="age" /></div>
<div><input type="submit" value="提交" /></div>
</form>
</div>
</body>
</html>

复制代码 代码如下:

3.在thinkphpApplicationHomeModel里面写模型文件,也就是验证的方法。

function beforeCall(form,options){ 
    if(window.console){ 
        console.log("表单提交验证通过后,Ajax 提交之前的回调"); 
    }; 
    return true; 
}; 
//  
function ajaxValidationCallback(status,form,json,options){ 
    if(window.console){ 
        console.log(status); 
    }; 
    if(status === true){ 
        alert("the form is valid!"); 
    } 
}; 
jQuery(document).ready(function(){ 
    jQuery("#formID").validationEngine({ 
        ajaxFormValidation: true,  //是否使用 Ajax 提交表单 
        ajaxFormValidationMethod: 'post',  //设置 Ajax 提交时,发送数据的方式 
        onAjaxFormComplete: ajaxValidationCallback,  //表单提交,Ajax 验证完成后 
        onBeforeAjaxFormValidation: beforeCall  //表单提交验证通过后,Ajax 提交之前的回调 
    }); 
}); 

<?php
namespace HomeModel;
use ThinkModel;
class YongHuuModel extends Model
{
protected $tablePrefix = "";
protected $trueTableName = 'yonghuu'; //真实表名
//protected $patchValidate = true;
protected $_validate = array(
array('uid','require','用户名不能为空!'),
array('pwd','pwd1','两次输入的密码不一致!',0,'confirm'), //两个字段是否相同
array('email','email','邮箱格式不正确'),
array('name','/^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$/','身份证号不正确!',0,'regex'),
array('age','18,50','年龄不在范围内',0,'between'),
);
}

beforeCall 这个方法是不会调用的是不会调用的,所以还是不能使用

二、动态验证

4 使用ajax验证并且使用ajax提交表单,这个方式就让人纠结了,上面修改源码的方式就不好用了.

TAG标签:
版权声明:本文由凯时国际ag下载发布于技术核心,转载请注明出处:之前的表单验证都是用js写的,2 使用ajax提交表单