纯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启动应用程序的一个简单例子
May 11 Javascript
prototype Element学习笔记(篇二)
Oct 26 Javascript
jsonp原理及使用
Oct 28 Javascript
javascript转换日期字符串为Date日期对象的方法
Feb 13 Javascript
JavaScript中Date.toSource()方法的使用教程
Jun 12 Javascript
jquery实现可旋转可拖拽的文字效果代码
Jan 27 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
May 12 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
Aug 31 Javascript
vue项目引入Iconfont图标库的教程图解
Oct 24 Javascript
js实现json数组分组合并操作示例
Feb 12 Javascript
vue实现图片懒加载的方法分析
Feb 05 Javascript
JS面向对象编程——ES6 中class的继承用法详解
Mar 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实现数组按指定KEY排序的方法
2015/03/30 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
setTimeout学习小结
2017/02/08 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
Python中使用dom模块生成XML文件示例
2015/04/05 Python
用Python实现KNN分类算法
2017/12/22 Python
Python线程创建和终止实例代码
2018/01/20 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
python requests post多层字典的方法
2018/12/27 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
python ChainMap的使用和说明详解
2019/06/11 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
python调用百度API实现人脸识别
2020/11/17 Python
英语专业毕业生自荐信
2013/10/28 职场文书
户外用品商店创业计划书
2014/01/29 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python