请求方式: POST

修改请求参数 :      /change_pwd/

业务处理流程

验证手机号是否注册    (格式, ajax请求检查)

原密码是否正确   (格式,null, 数据库检查)

新密码是否正确   (格式, null, 存数据库)

参数 是否前端传入 描述 类型
mobile 用户输入的手机号 字符串
old_password 用户输入要修改的密码 字符串
new_password 用户输入的新密码 字符串
sms_code 用户输入的短信验证码 字符串

 

 

 

 

 

注:由于是post请求,在向后端发起请求时,需要附带csrf token

 

前端代码  (毕竟是前端发送ajax请求的)

 

$(function () {
    let $mobile = $('#mobile');
    let $smsCodeBtn = $('.form-item .sms-captcha');  // 获取短信验证码按钮元素,需要定义一个id为input_smscode
    let $submit = $('.form-contain');


    // 手机号检测
    $mobile.blur(function () {
    fn_check_mobile();
    });

    // 短信验证码发送
    $smsCodeBtn.click(function () {




      // 判断手机号是否输入
    if (fn_check_mobile() !== "success") {
        return
    }
    let SdataParams = {
      "mobile": $mobile.val(),   // 获取用户输入的手机号
    };

    $.ajax({
        //请求地址
        url : "/change_pwd/sms_code/",
        //请求方式
        type: "POST",
        data: JSON.stringify(SdataParams),
        contentType: "application/json; charset=utf-8",
        dataType : "json",
        async: false,
    })
        .done(function (res) {
           if (res.errno === "0") {
          // 倒计时60秒,60秒后允许用户再次点击发送短信验证码的按钮
           message.showSuccess('短信验证码发送成功');
          let num = 60;
          // 设置一个计时器
          let t = setInterval(function () {
            if (num === 1) {
              // 如果计时器到最后, 清除计时器对象
              clearInterval(t);
              // 将点击获取验证码的按钮展示的文本恢复成原始文本
              $smsCodeBtn.html("获取验证码");
            } else {
              num -= 1;
              // 展示倒计时信息
              $smsCodeBtn.html(num + "秒");
            }
          }, 1000);
        }
           else {
          message.showError(res.errmsg);
        }
        })
        .fail(function () {
            message.showError('服务器超时,请重试!');
        });

    });
    
    // 确认修改密码
    $submit.submit(function (e) {
        e.preventDefault();

        //获取用户输入的内容
        let sMobile = $mobile.val();
        let soldPassword = $("input[name=old_password]").val();
        let snewPassword = $("input[name=new_password]").val();
        let sSmsCode = $("input[name=sms_captcha]").val();

        if (fn_check_mobile() !== "success") {
            return
        }

        // 判断用户输入的密码是否为空
        if ((!soldPassword) || (!snewPassword)) {
          message.showError('密码或确认密码不能为空');
          return
        }

        // 判断用户输入的密码和确认密码长度是否为6-20位
        if (!(/^[0-9A-Za-z]{6,20}$/).test(snewPassword)) {
          message.showError('新密码的长度需在6~20位以内');
          return
        }
        // 判断用户输入的密码和确认密码长度是否为6-20位
        if (!(/^[0-9A-Za-z]{6,20}$/).test(soldPassword)) {
          message.showError('原密码的长度需在6~20位以内');
          return
        }

        // 密码不能一样
        if (soldPassword == snewPassword) {
          message.showError('原密码和新密码一致,请重新检查并输入');
          return
        }

        //短信验证码格式
        if (!(/^\d{6}$/).test(sSmsCode)) {
          message.showError('短信验证码格式不正确,必须为6位数字!');
          return
        }

        //发起POST请求
        let SdataParams = {
          "mobile": sMobile,
          "old_password": soldPassword,
          "new_password": snewPassword,
          "sms_code": sSmsCode,
        };

        $.ajax({
            url: "/change_pwd/",

            type: "POST",

            headers: {
              "X-CSRFToken": getCookie("csrf_token")
            },
            data: JSON.stringify(SdataParams),

            contentType: "application/json; charset=utf-8",

            dataType: "json",

        })
          .done(function (res) {
        if (res.errno === "0") {
          // 注册成功
          message.showSuccess('恭喜你, 修改成功!');
          setTimeout(function () {
            // 注册成功之后重定向到主页
            window.location.href = document.referrer;
          }, 1000)
        } else {
          // 注册失败,打印错误信息
          message.showError(res.errmsg);
        }
      })
          .fail(function(){
        message.showError('服务器超时,请重试!');
      });








    });

    // 检查手机号是否被注册
    function fn_check_mobile() {
    let sMobile = $mobile.val();  // 获取用户输入的手机号码字符串
    let sReturnValue = "";
    if (sMobile === "") {
      message.showError('手机号不能为空');
      return
    }
    if (!(/^1[345789]\d{9}$/).test(sMobile)) {
      message.showError('手机号码格式不正确,请重新输入!');
      return
    }
    $.ajax({
      url: 'change_pwd/mobiles/' + sMobile + '/',
      type: 'GET',
      dataType: 'json',
      async: false
    })
      .done(function (res) {
        if (res.data.count == 0) {
          message.showError(res.data.mobile + '尚未注册,请重新输入!');
          sReturnValue = ""
        } else {
          message.showSuccess(res.data.mobile + '号码正确');
          sReturnValue = "success"
        }
      })
      .fail(function () {
        message.showError('服务器超时,请重试!');
        sReturnValue = ""
      });
    return sReturnValue

  }
    
    function getCookie(name) {
    let cookieValue = null;
    if (document.cookie && document.cookie !== '') {
      let cookies = document.cookie.split(';');
      for (let i = 0; i < cookies.length; i++) {
        let cookie = jQuery.trim(cookies[i]);
        // Does this cookie string begin with the name we want?
        if (cookie.substring(0, name.length + 1) === (name + '=')) {
          cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
          break;
        }
      }
    }
    return cookieValue;
  }
});
View Code

相关文章: