清华大学赵志磊--商品支付模块 前后端分离 前端

这是一个关于网页登录验证及商品列表、详情和下单流程的示例。包含手机号和验证码的验证,前端限制验证码获取频率,登录后跳转到商品列表,商品列表展示和点击进入商品详情,以及商品详情页面的下单功能。涉及到的技术包括jQuery、Ajax、本地存储以及简单的前端验证。
摘要由CSDN通过智能技术生成

登录:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
		<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
		<style type="text/css">
			#login{
				width: 320px;
				height: 320px;
				margin-top: 200px;
				margin-left: auto;
				margin-right: auto;
			}
			.error{
				color: red;
			}
		</style>
	</head>
	<body>
		<div id="login" class="form-inline">
			<div class="form-group">
				<input type="text"  id="phone" class="form-control" placeholder="手机号"/> <span class="error"></span>
			</div>
			<div class="form-group">
				<input type="text" id="code" class="form-control" placeholder="验证码"> 
				<input type="button" value="获取验证码" id="getCode" class="btn"> <span class="error"></span>
			</div>
			<br>
			<br>
			<button class="login btn btn-info">登录</button>
		</div>
	</body>
</html>
<!-- <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script> -->
<script src="./js/jQuery-3.5.1.min.js"></script>
<script src="./js/jquery-cookie1.4.1jquery.cookie.min.js"></script>
<script type="text/javascript">
	// 获取验证码  先做手机号失焦验证
	$('#phone').blur(function(){
		var phone = $(this).val();
		var preg_phone = /^1[35789]\d{9}$/;
		if(phone == ''){
			$(this).next().empty();
			$(this).next().text('手机号非空');
			return false;
		}
		if(!preg_phone.test(phone)){
			$(this).next().empty();
			$(this).next().text('手机号格式不正确');
			return false;
		}
		$(this).next().empty();
	})
	// 获取验证码  验证手机号 并且前端限制60秒内  不能重复点击
	$('#getCode').click(function(){
		var phone = $('#phone').val();
		var preg_phone = /^1[35789]\d{9}$/;
		if(phone == ''){
			$('#phone').next().empty();
			$('#phone').next().text('手机号非空');
			return false;
		}
		if(!preg_phone.test(phone)){
			$('#phone').next().empty();
			$('#phone').next().text('手机号格式不正确');
			return false;
		}
		$('#phone').next().empty();
		// 开始写计时器  前端限制手机号验证码接口调用频次
		var _this = this;
		var number = 5;
		var timer = setInterval(function(){
			if(number>1){
				number--;
				$(_this).val(number+'s后重新获取');
				$(_this).attr('disabled',true);
			}else{
				
				$(_this).val('重新获取');
				$(_this).attr('disabled',false);
				clearInterval(timer);
			}
		},1000)
		$.ajax({
			url:"http://www.month.com/get_code?phone="+phone,
			type:"GET",
			dataType:"JSON",
			success:function(res){
				if(res.code == 200){
					$('.error').eq(1).empty();
					$('.error').eq(1).text(res.msg);
					$('.error').css('color','green');
				}
				if(res.code == 2001){
					$('.error').eq(1).empty();
					$('.error').eq(1).text(res.msg);
				}
			}
		})
		
	})
	// 登录
	$('.login').click(function(){
		// 验证手机号是否合法
		var phone = $('#phone').val();
		var preg_phone = /^1[35789]\d{9}$/;
		if(phone == ''){
			$('#phone').next().empty();
			$('#phone').next().text('手机号非空');
			return false;
		}
		if(!preg_phone.test(phone)){
			$('#phone').next().empty();
			$('#phone').next().text('手机号格式不正确');
			return false;
		}
		$('#phone').next().empty();
		// 验证短信验证码格式是否正确
			var code = $('#code').val();
			if(code == ''){
				$('#code').next().next().empty();
				$('#code').next().next().text('短信验证码非空');
				return false;
			}
			var preg_code = /^\d{4}$/;
			if(!preg_code.test(code)){
				$('#code').next().next().empty();
				$('#code').next().next().text('短信验证码格式不正确');
				return false;
			}
			$('#code').next().next().empty();
			// 开始发送请求  获取token
			$.ajax({
				url:"http://www.month.com/login",
				type:"POST",
				dataType:"JSON",
				data:{
					phone:phone,
					code:code,
				},
				success:function(res){
					console.log(res);
					if(res.code == 200){
						localStorage.setItem('token',res.data.token);
						window.location.href='user_info.html';
					}
					if(res.code == 2001){
						alert(res.msg);
					}
				}
			})
		})
</script>

商品列表:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		ul{
			width: 1200px;
			height: 650px;
			margin-top: 80px;
			background-color: pink;
			border: 5px solid orange;
			margin-left: auto;
			margin-right: auto;
			border-radius: 5px;
		}
		ul li{
			width: 300px;
			height: 230px;
			margin: 50px;
			background-color: yellow;
			float: left;
			list-style: none;
		}
		</style>
	</head>
	<body>
		<input type="text" class="page"> <button type="button" class="getPage">输入页码</button>
		<ul>
			
		</ul>
	</body>
</html>
<script src="js/login.js"></script>
<script src="js/jQuery-3.5.1.min.js"></script>
<script src="js/md5.js"></script>
<script>
	
	// 加载数据
	function getGoods(page){
		var token = getToken();
		localStorage.setItem('page',page);
		var params = new Array();
		params['page'] = page;
		sign = create_sign(params);
		params['sign'] = sign;
		var url = '';
		for(var i in params){
			url += i+'='+params[i]+'&';
		}
		url = url.substr(0,url.length-1);
		$.ajax({
			url:"http://www.month.com/goods_list?"+url,
			type:"GET",
			dataType:"JSON",
			headers:{
				'Authorization':"Bearer"+token
			},
			success:function(res){
				console.log(res);
				if(res.code == 200){
					var str = '';
					var data = res.data.goods;
					for(var i in data){
						str += '<li>'+"<img class='goodsDetail' ids='"+data[i]['id']+"' src='"+data[i]['goods_avatar']+"'width='80px;'>"+
						"<p class='goodsName'>图片:"+data[i]['goods_name']+"</p>"+
						"<p class='goodsPrice'>价格:"+data[i]['goods_price']+"</p>"+
						"<p class='goodsStore'>库存:"+data[i]['goods_store']+"</p>"+
						"<p class='goods_id'>id:"+data[i]['id']+"</p>"+
						"</li>";
					}
					$('ul').append(str);
				}
				if(res.code == 2001){
					alert(res.msg);
				}
			}
			
		})
	}
	// 页面加载
	$(document).ready(function(){
		var page = localStorage.getItem('page');
		if(isNaN(page)){
			page = 1;
		}
		$('.page').val(page);
		getGoods(page);
	})
	// 选择页码
	$('.getPage').click(function(){
		$('ul').empty();
		var page = $('.page').val();
		if(page == '' || isNaN(page)){
			page = 1;
		}
		getGoods(page);
	});
	// 点击进入详情
	 $("body").delegate(".goodsDetail","click",function(){
		var id = $(this).attr('ids');
		window.localStorage.setItem('goods_id',id);
		window.location.href='goods_detail.html';
	}) 
	
	
</script>

商品详情:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.content{
				width: 500px;
				height: 300px;
				margin-top: 200px;
				margin-left: auto;
				margin-right: auto;
				border: 10px solid pink;
				border-radius: 6px;
			}
		</style>
	</head>
	<body>
		<div class="content">
			
		</div>
	</body>
</html>
<script src="js/login.js"></script>
<script src="js/jQuery-3.5.1.min.js"></script>
<script src="js/md5.js"></script>
<script>
	$("body").delegate(".getOrder","click",function(){
		var id = $(this).attr('ids');
		if(isNaN(id) || id<=0){
			alert('商品参数id不合法');
			return false;
		}
		var number = $('.number').val();
		if(isNaN(number) || number<=0){
			number = 1;
		}
		var token = localStorage.getItem('token');
		if(token == ''){
			alert('下单前请先登录');
			window.location.href='login.html';
			return false;
		}
		var params = new Array();
		params['id'] = id;
		params['number'] = number;
		var sign = create_sign(params);
		params['sign'] = sign;
		var url = '';
		for(var i in params){
			url += i+'='+params[i]+'&';
		}
		url = url.substr(0,url.length-1);
		$.ajax({
			url:"http://www.month.com/get_order?"+url,
			type:"GET",
			dataType:"JSON",
			headers:{
				'Authorization':"bearer"+token
			},
			success:function(res){
				if(res.code == 200){
					alert(res.msg);
					localStorage.setItem('order_sn',res.data.order_sn);
					localStorage.setItem('total',res.data.total);
					window.location.href='pay.html';
				}
				if(res.code == 2001){
					alert(res.msg);
					window.location.href='login.html';
				}
			}
		})
	}) 
	// 页面加载事件  获取商品详情数据
	$(document).ready(function(){
		var id = window.localStorage.getItem('goods_id');
		if(isNaN(id) || id == ''){
			alert('参数不正确');
			return false;
		}
		var token = getToken();
		var params = new Array();
		params['id'] = id;
		var sign = create_sign(params);
		params['sign'] = sign;
		var url = '';
		for(var i in params){
			url += i+'='+params[i]+'&';
		}
		url = url.substr(0,url.length-1);
		$.ajax({
			url:"http://www.month.com/goods_detail?"+url,
			type:"GET",
			dataType:"JSON",
			headers:{
				'Authorization':'bearer'+token,
			},
			success:function(res){
				if(res.code == 200){
					var str = '';
					var data = res.data.goods;
					str += "<img src='"+data['goods_avatar']+"' width='80px;'>"
					str += "<p>"+data['goods_name']+"</p>"
					str += "<p>"+data['goods_price']+"</p>"
					str += "<p>"+data['goods_store']+"</p>"
					str += "<p>"+data['id']+"</p>"
					str += "<p><input type='text' class='number' value='1'/></p>"
					str += "<button class='getOrder' ids='"+data['id']+"'>立即订购</button>"
					$('.content').append(str);
				}
				if(res.code == 2001){
					alert(res.msg);
				}
			}
		})
	})


</script>

愿每位清华学子,都能在清华大学计算机专业取得好成绩!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柔情柴少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值