纯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 相关文章推荐
同时使用n个window onload加载实例介绍
Apr 25 Javascript
jquery如何根据值设置默认的选中项
Mar 17 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
Aug 08 Javascript
node.js中的fs.mkdir方法使用说明
Dec 17 Javascript
javascript比较语义化版本号的实现代码
Sep 09 Javascript
JS得到当前时间的方法示例
Mar 24 Javascript
javascript简单链式调用案例分析
May 10 Javascript
关于微信小程序map组件z-index的层级问题分析
Jul 09 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
WEB前端性能优化的7大手段详解
Feb 04 Javascript
vue使用screenfull插件实现全屏功能
Sep 17 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
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
JavaScript中split() 使用方法汇总
2015/04/17 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
详解Python的Django框架中的中间件
2015/07/24 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
Python科学画图代码分享
2017/11/29 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
python生成器用法实例详解
2019/11/22 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
python3注册全局热键的实现
2020/03/22 Python
python selenium 获取接口数据的实现
2020/12/07 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
简单的JAVA编程面试题
2013/03/19 面试题
超市促销实习自我鉴定
2013/09/23 职场文书
手机业务员岗位职责
2013/12/13 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
研究生毕业自我鉴定范文
2014/03/27 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers