纯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 相关文章推荐
JQuery 学习笔记 选择器之六
Jul 23 Javascript
推荐20家国外的脚本下载网站
Apr 28 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
Jan 16 Javascript
jquery中加载图片自适应大小主要实现代码
Aug 23 Javascript
JavaScript中join()方法的使用简介
Jun 09 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
Aug 10 Javascript
js获取当前日期时间及其它日期操作汇总
Mar 08 Javascript
JavaScript中动态向表格添加数据
Jan 24 Javascript
详解vue的数据binding绑定原理
Apr 12 Javascript
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
详解Vue3 Composition API中的提取和重用逻辑
Apr 29 Javascript
微信小程序自定义顶部组件customHeader的示例代码
Jun 03 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及Zend Engine的线程安全模型分析
2011/11/10 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
vue-router的hooks用法详解
2020/06/08 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
Python中的异常处理简明介绍
2015/04/13 Python
Python编程中time模块的一些关键用法解析
2016/01/19 Python
python2.7安装图文教程
2018/03/13 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
python实现扫雷小游戏
2020/04/24 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
Python 实现集合Set的示例
2020/12/21 Python
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
进口业务员岗位职责
2014/04/06 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python