Angular使用ng-messages与PHP进行表单数据验证
发布时间 - 2026-01-10 22:10:08 点击率:次Angular中的ng-messages提供了更方便的表单数据验证服务。

本文代码主要基于《AngularJS权威教程》中关于ng-messages模块的说明,但原文中不乏错误以及没有后台代码和示例,所以简单的实现其功能。//别的地方也有错误,我一度怀疑我买了盗版书==
比如我们想与后台进行表单数据合法性验证并给出输入操作提示
HTML代码:
<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="angular.js"></script>
<script src="angular-messages.js"></script>
<script>
angular.module("app", ["ngMessages"])
.directive("ensureUnique", function($http) {
return {
require: "?^ngModel",
//原文中混用了ngModel和ctrl,这里统一使用ngModel,意指ngModelController
link: function(scope, element, attrs, ngModel) {
var url = attrs.ensureUnique;
if (!ngModel) {
return false;
}
ngModel.$parsers.push(function(val) {
if (!val || val.length == 0) {
return false;
}
//设置表单状态,属性统一归于signup_form.username.$error中,这是为设置是否合法状态,所以如果设置为false,则会在ng-messages中显示,因为它调用的是$error方法,意为是否“不合法”,原文有错误。
ngModel.$setValidity("checkingAvailability", false);
ngModel.$setValidity("usernameAvailability", true);
$http({
method: "POST",
url: url,
data: {
username: val
}
}).then(function(r) {
if ("exist" == r.data) {
ngModel.$setValidity("checkingAvailability", true);
ngModel.$setValidity("usernameAvailability", false);
} else {
ngModel.$setValidity("checkingAvailability", true);
ngModel.$setValidity("usernameAvailability", true);
}
}, function(e) {
console.log(e);
})
return val;
})
}
}
})
.controller("MainController", function($scope) {
$scope.signup = {
username: ""
}
})
</script>
</head>
<body>
<div ng-controller="MainController">
<form name="signup_form" novalidate ng-submit="signupForm()">
<!-- 原文中指令放在了form元素中,应该放在input元素中 -->
<input type="text" name="username" ng-model="signup.username" required ng-min-length=3 ng-max-length=10 ensure-unique="check.php">
<!-- 输入过才显示操作信息 -->
<div class="error" ng-show="signup_form.$dirty" ng-messages="signup_form.username.$error" ng-messages-multiple>
<div ng-message="required">
Required!!!
</div>
<div ng-message="checkingAvailability">
Checking...
</div>
<div ng-message="usernameAvailability">
Has been taken, please choose another.
</div>
</div>
<div>
<button type="submit">Submit</button>
</div>
<p>{{signup_form.username.$error}}</p>
</form>
</div>
</body>
</html>
PHP代码:
<?php
//Angular与jQuery传递参数类型不同,不能直接使用$.POST['username']获取;
$postData = file_get_contents('php://input', true);
$obj=json_decode($postData);
//这里模拟唯一性验证
if($obj->username == '123'){
echo "exist";
}
else{
echo "available";
}
?>
效果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Angular表单验证
# ng
# messages表单数据验证
# php表单验证
# AngularJS实现表单验证
# AngularJS使用ngMessages进行表单验证
# 详解AngularJS实现表单验证
# AngularJS使用angular-formly进行表单验证
# AngularJS中实现用户访问的身份认证和表单验证功能
# AngularJS自动表单验证
# AngularJS手动表单验证
# 详细解读AngularJS中的表单验证编程
# AngularJs表单验证实例详解
# Angular表单验证实例详解
# 表单
# 放在
# 的是
# 这是
# 也有
# 因为它
# 设置为
# 则会
# 更方便
# 大家多多
# 意为
# 有错误
# 不合法
# 意指
# 是否合法
# 盗版书
# 我买了
# ensureUnique
# http
# function
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
使用豆包 AI 辅助进行简单网页 HTML 结构设计
如何确保西部建站助手FTP传输的安全性?
如何在云虚拟主机上快速搭建个人网站?
如何在阿里云域名上完成建站全流程?
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
网站建设要注意的标准 促进网站用户好感度!
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
Python文件操作最佳实践_稳定性说明【指导】
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
什么是javascript作用域_全局和局部作用域有什么区别?
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
如何选择PHP开源工具快速搭建网站?
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
JavaScript如何实现路由_前端路由原理是什么
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
南京网站制作费用,南京远驱官方网站?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
html如何与html链接_实现多个HTML页面互相链接【互相】
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
网站建设保证美观性,需要考虑的几点问题!
如何续费美橙建站之星域名及服务?
🚀拖拽式CMS建站能否实现高效与个性化并存?
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
bing浏览器学术搜索入口_bing学术文献检索地址
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
Laravel如何处理异常和错误?(Handler示例)
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
焦点电影公司作品,电影焦点结局是什么?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Laravel如何使用Collections进行数据处理?(实用方法示例)
JavaScript如何实现错误处理_try...catch如何捕获异常?
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
网站制作大概多少钱一个,做一个平台网站大概多少钱?
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
如何快速生成凡客建站的专业级图册?
装修招标网站设计制作流程,装修招标流程?
香港服务器租用每月最低只需15元?

