纯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 相关文章推荐
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
Mar 24 Javascript
js innerHTML 的一些问题的解决方法
Jun 22 Javascript
Jquery实现无刷新DropDownList联动实现代码
Mar 08 Javascript
jQuery的链式调用浅析
Dec 03 Javascript
jQuery代码优化之基本事件
Nov 01 Javascript
JS前端框架关于重构的失败经验分享
Mar 17 Javascript
alert和confirm功能介绍
May 21 Javascript
js实现文本上下来回滚动
Feb 03 Javascript
Vue实现自定义下拉菜单功能
Jul 16 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
Jan 09 jQuery
从零到一详聊创建Vue工程及遇到的常见问题
Apr 25 Javascript
对layer弹出框中icon数字参数的说明介绍
Sep 04 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 URL跳转代码 减少外链
2011/06/25 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
PHP文件上传类实例详解
2016/04/08 PHP
PHP简单日历实现方法
2016/07/20 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
15 个 JavaScript Web UI 库
2010/05/19 Javascript
javascript 节点排序 2
2011/01/31 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
webpack之引入图片的实现及问题
2018/10/08 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
python实现2014火车票查询代码分享
2014/01/10 Python
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python实现从URL地址提取文件名的方法
2015/05/15 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
如何设置Java的运行环境
2013/04/05 面试题
网吧消防安全制度
2014/01/28 职场文书
校园文化标语
2014/06/18 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记