记一次Ajax post请求,前后端数据交互,判断用户注册的手机号码是否唯一

首先,创建一个数据表 userinfo ,里面有id, name ,phoneNum,paswd 和 memberLevel,图片如下:
数据表设计
后端java先连接数据库,建一个BaseConnection类,代码如下:

package com.determ.until;

import java.sql.Connection;
import java.sql.DriverManager;

public class BaseConnection {
public static Connection getConnection(){
	Connection conn = null;
	try{
		Class.forName("com.mysql.jdbc.Driver");
		conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/customerInfo","root","root");
		
	}catch(Exception e){
		e.printStackTrace();
	}
	return conn;
}

然后创建一个Customer基础类,里面声明一些属性,也对应数据库里面的字段,关键代码如下:

  private int  id;
	private String name;
	private String phoneNum;
	private String paswd;
	private String memberLevel;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}

省略部分get 和set方法
然后在com.determ.servlet包里面建一个FindServlet类,主要通过接收前端传来的phoneNum,然后执行sql查询语句,来检测号码是否与数据库中重复,如果没有,则可以注册。

public void checkPhone(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		try {
			Connection conn = BaseConnection.getConnection(); //建立连接
			Statement stmt = conn.createStatement();  //获取Statement对象
			String userPhone = request.getParameter("phoneNum"); //获取前端传过来的phoneNum
			String result ="";  //声明结果
			String sql = "select*from  userinfo  where phoneNum='"+userPhone+"';" ;  //数据库语句
			System.out.println(sql); 
			ResultSet rs = stmt.executeQuery(sql);  //执行数据库语句
			if(rs.next()){  //如果数据库语句能执行,返回"0" 也表示手机号码已经注册
				result ="0";  
			}else{
				result = "1";  //如果数据库语句不能执行,返回"1" 也表示手机号码未注册,可以注册
			}
			//将返回值转换成json字符串,并实现jsonpCallback  successCallback转换。
			String string ="successCallback("+JSON.toJSONString(result,true).toString()+")"; 
			 response.setContentType("text/html;charset=UTF-8"); 
			PrintWriter out = response.getWriter();//返回给前端
			out.write(string);//返回给前端
			System.out.println(string);
			out.flush();
			out.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//最后在doPost里面执行checkPhone方法。
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			this.checkPhone(request, response);
	}

前端js代码是:

//手机号码失去焦点判断手机号可否注册
				$("#phone").focusout(function(){
					var phone = $("#phone").val();
					if(!(/^1[34578]\d{9}$/.test(phone))){
						mui.alert("手机号码有误,请重填");
					}else{
						checkPhoneNum(phone);
					}
				})
				//发ajax请求后台判断手机号码是否重复
				function checkPhoneNum(phone){
					$.ajax({
						url:"http://localhost:8080/DeterminationInCloud/FindServlet?action=checkPhone",
						type:"post",
						dataType:"jsonp",
						jsonpCallback:"successCallback", //如果这一句不写,程序将直接执行error,而不会执行success.
						async:true,
						data:{phoneNum:phone},
						success:function(result){
							console.log(result);
							if(result == "1"){
								mui.toast("该号码可以注册!");
							}else{
								mui.alert("该号码已经注册!");
							}
					},
						error:function(){
							mui.alert("对不起,请求出错!");
						}
					})
				}

好了代码就这么多,这一个ajax 请求可以执行,能够验证注册手机号码是否唯一。ヾ()ノ也是新手,还望大咖指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值