(function () {function AjaxTool() {}AjaxTool.ajaxRequest = function(params,successCallback, failedCallback){// 1. 获取参数var requestType = params['requestType'] || 'get';    //请求方式var url = params['url'];    // 请求路径var paramObj = params['paramObj'];  // 传递参数var timeOut = params['timeOut'] || 0;    // 请求时长// 2. 发送请求var xhr = new XMLHttpRequest();// 判断if(requestType.toLowerCase()=== 'get'){// get 请求// 使用encodeURI 函数可把字符串作为 URI 进行编码。增加健壮性var codeUrl = encodeURI(url+'?'+getStrWithObject(paramObj));xhr.open('get',codeUrl,true);xhr.send();}else if(requestType.toLowerCase()=== 'post'){// post 请求var codeParam = encodeURI(getStrWithObject(paramObj));xhr.open('post',url,true);// 设置请求头xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');xhr.send(codeParam);}xhr.addEventListener('readystatechange',function (ev) {if (xhr.readyState === 4){if (xhr.status === 200){// 请求成功successCallback && successCallback(xhr);// 清除定时器clearTimeout(timer);}else{// 请求失败failedCallback && failedCallback(xhr);}}// 0代表不限制请求时长var timer =null;if (timeOut > 0){timer = setTimeout(function () {// 取消请求xhr.abort();},timeOut);}})};/*** 把对象转换为拼接字符串* @param {Object}paramObj*/function getStrWithObject(paramObj){var resArr = [];// 1. 转化对象for (var key in paramObj){var str = key + '=' + paramObj[key];resArr.push(str);}// 2. 拼接时间戳resArr.push('random='+getRandomStr());// 3. 数组转成字符串return resArr.join('&');}/*** 生成随机时间戳* @returns {number}*/function getRandomStr(){return Math.random() + (new Date().getTime());}window.AjaxTool = AjaxTool;
})(window);

JavaScript:网络请求工具库AjaxTool.js相关推荐

  1. 网络请求urllib库使用总结

    网络请求urllib库使用总结 目录 网络请求urllib库使用总结 1.概述 2.Urllib库基本使用 2.1.Urllib库快速上手 1.完成一次简单的get请求 2.read()函数介绍 3. ...

  2. request 网络请求工具

    /*** request 网络请求工具* @Doc: https://github.com/umijs/umi-request*/ import { clearAuthority } from '@/ ...

  3. python网络爬虫工具库集合

    经常逛 GitHub 的同学可能会听说过大名鼎鼎的 awesome 仓库,没错,就是这个:https://github.com/sindresorhus/awesome. 这个库可谓是一个极大的宝藏, ...

  4. Flutter网络请求Dio库的使用及封装

    Dart语言内置的HttpClient实现了基本的网络请求相关的操作.但HttpClient本身功能较弱,很多网络请求常用功能都不支持,因此在实际项目中,我们更多是使用dio库实现网络请求. 注:Fl ...

  5. Flutter开发之HTTP网络请求:dio库(28)

    dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API.FormData.拦截器.请求取消.Cookie管理.文件上传/下载.超时等- 第三方库 dio实现g ...

  6. 工具库 --- Validator (JS正则)

    工具库 --- Validator 今天写的是一个正则验证类 单例模式 工具库地址:github.com/WeForStudy/- npm地址:www.npmjs.com/package/slm- 单 ...

  7. 基于HttpURLConnection 网络请求工具类的封装

    HttpUtils: /*** Created by xiaoyehai on 2018/5/21 0021.*/public class HttpUtils {//线程池private static ...

  8. 网络请求urllib库的基本使用 ----------python的爬虫学习

    简单的网络请求: from urllib import request url = "http://www.baidu.com" rep=request.urlopen(url) ...

  9. JavaScript数字运算必备库——big.js源码解析

    概述 在我们常见的JavaScript数字运算中,小数和大数都是会让我们比较头疼的两个数据类型. 在大数运算中,由于number类型的数字长度限制,我们经常会遇到超出范围的情况.比如在我们传递Long ...

  10. java okhttp3 工具类,Retrofit+okhttp+Rxjava网络请求工具类

    1.BaseApis接口封装请求方式 package com.example.wdshop.network; import java.util.Map; import okhttp3.Response ...

最新文章

  1. 如何利用 C# 实现神经网络的感知器模型?
  2. Debian 系统初体验
  3. Cisco和H3C的两种不同动态***解决方案
  4. MySQL数据库az排序_RDS Mysql Single-AZ和Multi-AZ性能差异
  5. 1362. 健康的荷斯坦奶牛【难度: 一般 / 二进制枚举】
  6. 机器学习实战(python)-Ch02KNN-Notes
  7. python 如何边改代码边调试_Python 代码调试神器:PySnooper
  8. 生产环境运行Docker的9个关键决策
  9. 运算放大器基本公式_跨阻放大器稳定性
  10. 关于Cocos2d-x的粒子系统
  11. macos安装vscode_什么!你还没有安装Flutter!
  12. hdu1829 A Bug's Life
  13. SPSS新手教程—两步聚类之结果解读
  14. vue.js毕设项目利器,路过给个star
  15. ios备忘录下载安卓版_iOS8备忘录
  16. Android文字转语音播报
  17. 细胞迁移 | cell migration
  18. (转)国内外优秀的Web前端工程师
  19. 信息搜集之CDN知识
  20. PNP型三极管是不是要发射极接正电压,基极和集电极接地才能工作?能给张图不?

热门文章

  1. 59. DNS 服务器
  2. 45. Element isDefaultNamespace() 方法
  3. 37. Element appendChild() 方法
  4. CentOS 5.5 使用 EPEL 和 RPMForge 软件库
  5. 机器学习三剑客之Matplotlib
  6. Hadoop MapReduce编程 API入门系列之倒排索引(二十四)
  7. VBA基础知识———常用语句
  8. Android ListView
  9. JavaScript开发规范要求
  10. maya 处理 linux 鼠标变X