纯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 相关文章推荐
js实现的日期操作类DateTime函数代码
Mar 16 Javascript
js下写一个事件队列操作函数
Jul 19 Javascript
JS动态添加option和删除option(附实例代码)
Apr 01 Javascript
通过实例理解javascript中没有函数重载的概念
Jun 03 Javascript
Bootstrap每天必学之表格
Nov 23 Javascript
JavaScript操作表单实例讲解(上)
Jun 20 Javascript
JS for循环中i++ 和 ++i的区别介绍
Jul 20 Javascript
jQuery Ztree行政地区树状展示(点击加载)
Nov 09 Javascript
Iscrool下拉刷新功能实现方法(推荐)
Jun 26 Javascript
使用Vue-Router 2实现路由功能实例详解
Nov 14 Javascript
浅谈目前可以使用ES10的5个新特性
Jun 25 Javascript
js实现GIF图片的分解和合成
Oct 24 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
smarty简单分页的实现方法
2014/10/27 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
PHP模块化安装教程
2016/06/01 PHP
php无限级分类实现方法分析
2016/10/19 PHP
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
Python获取当前时间的方法
2014/01/14 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
苹果台湾官网:Apple台湾
2019/01/05 全球购物
外贸业务员求职信范文
2013/12/12 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
科学发展观标语
2014/10/08 职场文书
大国崛起日本观后感
2015/06/02 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
导游词之江苏同里古镇
2019/11/18 职场文书
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript