纯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 相关文章推荐
网页的标准,IMG不支持onload标签怎么办
Jun 29 Javascript
jQuery 页面 Mask实现代码
Jan 09 Javascript
对jQuery的事件绑定的一些思考(补充)
Apr 20 Javascript
javascript判断office版本示例
Apr 11 Javascript
JavaScript中的原型prototype属性使用详解
Jun 05 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
May 30 Javascript
移动端界面的适配
Jan 11 Javascript
jQuery实现导航回弹效果
Feb 27 Javascript
使用Xcache缓存器加速PHP网站的配置方法
Apr 22 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
Dec 20 Javascript
在vue中使用jsx语法的使用方法
Sep 30 Javascript
原生js实现商品筛选功能
Oct 28 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
IStream与TStream之间的相互转换
2008/08/01 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
2017/02/27 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python中count函数简单的实例讲解
2020/02/06 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
清正廉洁演讲稿
2014/05/22 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
小程序实现文字循环滚动动画
2021/06/14 Javascript
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技