纯js封装的ajax功能函数与用法示例


Posted in Javascript onMay 14, 2018

本文实例讲述了纯js封装的ajax功能函数与用法。分享给大家供大家参考,具体如下:

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)AJAX 不是新的编程语言,而是一种使用现有标准的新方法。是7种技术的综合,它包含了七个技术(javascript xml xstl xhtml dom xmlhttprequest , css),  ajax  是一个粘合剂。

直接上程序:

js调用部分:

<script src="ds.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
<span style="white-space:pre;"> </span>window.onload=function(){
    var oDs=document.getElementById('ds');
    var oText=document.getElementById('text');
    oDs.onclick=function(){
      //第一个参数:数据传输方式 get post
      //第二个参数:调用文件的路径
      //第三个参数:data
      //第四个参数:回调函数
      ajax('GET','aa.txt','',function(str){
        //此处是调用名字为aa的txt文件里所有的内容(str),所以data直接为''
        //如果需要插入特定参数,则data值为 data='&name='+oText.value;
        console.log(str);//名字为aa的txt文件里所有的内容
      });
    }
  }
</script>

html部分:

<input type="button" name="ds" id="ds" value="弹出" />
<input type="text" value="" id="text"/>

ajax封装部分:

function ajax(method, url, data, fnsuccess) {
  var xhr;
  //1.创建对象,兼容问题
  if(window.XMLHttpRequest) {
    //在高版本的浏览器 IE7+
    xhr = new XMLHttpRequest();
    //XMLHttpRequest用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
  } else {
    //IE5 IE6
    xhr = new ActiveXObject();
  }
  //2.发送请求
  //第一个参数:数据传输方式 get post
  //第二个参数:处理文件 xx.php xx.txt ,要数据:直接写路径就好;提交数据:在地址那里写数据(get方式)
  //第三个参数:同步或者异步方式,默认是异步true
  //open
  //get模式路径上同时加入需要传输的内容
  if(method == 'GET' && data) {
    url = url + '?' + data;
  }
  xhr.open(method, url, true);
  //send
  //send()如果是get方式,写null或者为空;
  //如果是post,参数那就直接写要传输的内容
  if(method == 'GET') {
    xhr.send(null);
  } else {
    //创建头文件信息
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send(data);
  }
  //4.接受php传过来的数据,解析 dom操作
  xhr.onreadystatechange = function() {
    if(xhr.readyState == 4) {//响应过程状态信息,4代表发送完成,顺利返回信息
      if(xhr.status == 200) {//status:状态码,如果返回的信息是200
        fnsuccess && fnsuccess(xhr.responseText);
      } else {
        alert(xhr.status);//发生错误时,返回该状态码
      }
    }
  }
}

表单验证,用户名验证:

<form action="checkName.php" method="post">
  <!--span标签是用于提示,用户名重复,以及可以注册-->
  用户名:<input type="text" id="username" /><span id="inf"></span><br />
   密码:<input type="password" /><br />
  <input type="button" id="submit" value="提交" />
</form>

js调用部分:

<script src="ds.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
  window.onload = function() {
    var oUsername = document.getElementById('username');
    var oInf = document.getElementById('inf');
    oUsername.onkeyup = function() {
      var data='&name=' + oUsername.value;
      //路径连接的是php文件
      ajax('GET','/0322/test/checkName.php',data,function(str){
        oInf.innerHTML=str;
      });
    }
  }
</script>

php部分:

<?php
// echo 输出
// echo 'qwerrtty';
//3.获取ajax传来的信息,做处理,在返回给ajax:后台做或者后台协作。
//这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式
  header("Content-Type: text/xml;charset=utf-8");
  //告诉浏览器不要缓存数据
  header("Cache-Control: no-cache");
//返回xml txt json html
  $userName=$_GET['name'];
  if($userName=='admin'){//把内容拿到,进行判断
    echo '<result><mes>该用户名重复了</mes></result>';
  }else{
    echo '<result><mes>该用户名可以注册</mes></result>';
  }
?>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript中Object和Function的关系小结
Sep 26 Javascript
Jquery cookie操作代码
Mar 14 Javascript
另一个javascript小测验(代码集合)
Jul 27 Javascript
js跨域请求数据的3种常用的方法
Dec 01 Javascript
javascript事件的绑定基础实例讲解(34)
Feb 14 Javascript
jquery横向纵向鼠标滚轮全屏切换
Feb 27 Javascript
基于vue实现swipe轮播组件实例代码
May 24 Javascript
vue input输入框模糊查询的示例代码
May 22 Javascript
Vue创建头部组件示例代码详解
Oct 23 Javascript
JavaScript函数的特性与应用实践深入详解
Dec 30 Javascript
Angular单元测试之事件触发的实现
Jan 20 Javascript
原生js canvas实现鼠标跟随效果
Aug 02 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
May 14 #Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 #Javascript
jQuery中元素选择器(element)简单用法示例
May 14 #jQuery
jQuery中的类名选择器(.class)用法简单示例
May 14 #jQuery
vue引入js数字小键盘的实现代码
May 14 #Javascript
vue移动端路由切换实例分析
May 14 #Javascript
对node.js中render和send的用法详解
May 14 #Javascript
You might like
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
python代码 输入数字使其反向输出的方法
2018/12/22 Python
python创建n行m列数组示例
2019/12/02 Python
家电业务员岗位职责
2014/03/10 职场文书
财产公证书样本
2014/04/04 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
诚信承诺书
2015/01/19 职场文书
小学信息技术教学反思
2016/02/16 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android
flex弹性布局详解
2022/03/20 HTML / CSS
Python OpenCV超详细讲解基本功能
2022/04/02 Python
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python