原生js中ajax访问的实例详解


Posted in Javascript onSeptember 19, 2017

原生js中ajax访问的实例详解

form表单中

登录名:

失去光标即触发事件

function createXmlHttp() { 
    var xmlHttp; 
    try { // Firefox, Opera 8.0+, Safari 
      xmlHttp = new XMLHttpRequest(); 
    } 
    catch (e) { 
      try {// Internet Explorer 
        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
      } 
      catch (e) { 
        try { 
          xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        catch (e) { } 
      } 
    } 

    return xmlHttp; 

  } 


  function infoCheck(){
    var ename=document.getElementById("ename").value;
    var password=document.getElementById("password").value;
    var pwdConfirm=document.getElementById("pwdConfirm").value;
    if(password!=pwdConfirm){
      alert("两次密码不统一");
      return ;
    }
    //验证登录用户名是否存在,类似的可以验证手机号什么的
    // 1.创建异步对象 
    var xhr = createXmlHttp(); 
    xhr.onreadystatechange = function () { 
      if (xhr.readyState === 4 && xhr.status === 200) { 

      //  var data = new Function("return" + xhr.responseText)()//反序列化 
      var val=xhr.responseText;
        if(val==1){
          document.getElementById("ch").innerHTML="重新设置名字";
          document.getElementById("ename").focus();
          return;
        }else{
          document.getElementById("ch").innerHTML="";
        }
      } 
    } 

    xhr.open("post", 'LoginController/checkEname?ename='+escape(encodeURIComponent(ename)), true);  
    //发送 
    xhr.send(null); 
  }

在返回xhr.responseText数据时,中文有乱码的体现,尚未解决,所以为了只管体现,我让后台返回的是“0”或者“1”来做判断,je中createXmlHttp()这个方法以前看老师讲过,但是还是不理解,目前仿照这写吧,功能实现了,这也是看到的最简单的版本实现原生态ajax,整个ajax访问流程还是比较好理解,提交访问数据的时候也存在乱码问题

web项目乱码的问题解决方案

    开始的web项目整体以post方式提交,xml文件中加入以下编码过滤器

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
        org.springframework.web.filter.CharacterEncodingFilter
      </filter-class>
    <init-param>
     <param-name>encoding</param-name>
     <param-value>utf-8</param-value>
    </init-param>
    <init-param>
     <param-name>forceEncoding</param-name>
     <param-value>true</param-value>
    </init-param>
   </filter>
   <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
   </filter-mapping>

   提交的时候
   剩下的 小部分的乱码可以用编码在解码的方式获得正确数据
   编码:'LoginController/checkEname?ename='+escape(encodeURIComponent(ename))
   解码:try {
      String str=URLDecoder.decode(ename, "utf-8");
       ename=URLDecoder.decode(ename, "utf-8");
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
    后面写入数据库的时候乱码问题,我个人先创数据库编码是utf8,项目的编码也是utf-8,避免其他的编码问题发生,在连接数据库的URL也加上
url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8
目前碰到的乱码问题已经解决(除开ajax返回数据乱码,这个目前没找到解决方案)

在来说下原生js非空验证和button点击提交功能

<form action="LoginController/register" method="post" id="form">
姓名:<input type="text" name="name" id="name"><br>
登录名:<input type="text" name="ename" id="ename" onblur="infoCheck()"> <font id="ch" name="ch"></font><br>
密码:<input type="password" name="password" id="password"><br>
密码确定:<input type="password" name="pwdConfirm" id="pwdConfirm"><br>
<input type="button" value="注册" onclick="submitInfo()" >
</form>

function submitInfo(){
    var name=document.getElementById("name").value;
    var ename=document.getElementById("ename").value;
    var password=document.getElementById("password").value;
    var pwdConfirm=document.getElementById("pwdConfirm").value;
    //针对空格和制表符的""能做到过滤
    name=name.replace(/(^\s*)|(\s*$)/g, "");
    ename=ename.replace(/(^\s*)|(\s*$)/g, "");
    password=password.replace(/(^\s*)|(\s*$)/g, "");
    pwdConfirm=pwdConfirm.replace(/(^\s*)|(\s*$)/g, "");
    if(name.length==0||name==" "||name.langth=="undefined") {
    //alert(name.langth);
    //alert(111);
    alert("姓名为必填项");
    return ;
    }
    if(ename.length==0||ename=="  "||ename.langth=="undefined") {
    alert("登录名为必填项");
    return ;
    }
    if(password.length==0||password==" "||password.langth=="undefined") {
    alert("密码为必填项");
    return;
    }
    if(password!=pwdConfirm){
      alert("两次密码不统一");
      return ;
    }
     document.getElementById("form").submit();
  }

后面继续加瓦,完善,所有代码在之前的基于注解spring4.,mybatis3.最简单的SSM整合 连接地址中,代码持续更新

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
jQuery常见开发技巧详细整理
Jan 02 Javascript
jquery操作HTML5 的data-*的用法实例分享
Aug 17 Javascript
javascript制作幻灯片(360度全景图片)
Jul 28 Javascript
js文字横向滚动特效
Nov 11 Javascript
浅析Jquery操作select
Dec 13 Javascript
JS多物体实现缓冲运动效果示例
Dec 20 Javascript
JS中精巧的自动柯里化实现方法
Dec 12 Javascript
vue代理和跨域问题的解决
Jul 18 Javascript
jquery登录的异步验证操作示例
May 09 jQuery
JavaScript数组去重实现方法小结
Jan 17 Javascript
JavaScript鼠标拖拽事件详解
Apr 03 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 Javascript
angularjs实现过滤并替换关键字小功能
Sep 19 #Javascript
详解vue-cli与webpack结合如何处理静态资源
Sep 19 #Javascript
前端常见跨域解决方案(全)
Sep 19 #Javascript
详解.vue文件中监听input输入事件(oninput)
Sep 19 #Javascript
JavaScript数组去重的多种方法(四种)
Sep 19 #Javascript
一步步教你利用Canvas对图片进行处理
Sep 19 #Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
Sep 19 #Javascript
You might like
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
在Django中限制已登录用户的访问的方法
2015/07/23 Python
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
python装饰器深入学习
2018/04/06 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
python3实现微型的web服务器
2019/09/03 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
领导干部培训感言
2014/01/23 职场文书
信息技术培训感言
2014/03/06 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
中国梦读书活动总结
2014/07/10 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
后进生评语大全
2015/01/04 职场文书
《认识钟表》教学反思
2016/02/16 职场文书
Python制作春联的示例代码
2022/01/22 Python