原生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 相关文章推荐
javascript getElementsByClassName 和js取地址栏参数
Jan 02 Javascript
js鼠标左右键 键盘值小结
Jun 11 Javascript
Prototype源码浅析 String部分(四)之补充
Jan 16 Javascript
javascript之typeof、instanceof操作符使用探讨
May 19 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
Apr 04 Javascript
理解javascript回调函数
Dec 28 Javascript
js正则表达式中exec用法实例
Jul 23 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
Dec 02 Javascript
Node.js批量给图片加水印的方法
Nov 15 Javascript
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 jQuery
微信小程序实现无限滚动列表
May 29 Javascript
详解javascript replace高级用法
Feb 17 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
综合图片计数器
2006/10/09 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
介绍Python中的fabs()方法的使用
2015/05/14 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
python开发之str.format()用法实例分析
2016/02/22 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
致跳远运动员加油稿
2014/02/11 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
2015年护士节慰问信
2015/03/23 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
goland 清除所有的默认设置操作
2021/04/28 Golang
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
Oracle中update和select 关联操作
2022/01/18 Oracle