项目中有时候用不到jq,需要了解xmlhttp原理,自己写一套函数请求和发送数据!

  1. /* 封装ajax函数
  2. * @param {string}opt.type http连接的方式,包括POST和GET两种方式
  3. * @param {string}opt.url 发送请求的url
  4. * @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的
  5. * @param {object}opt.data 发送的参数,格式为对象类型
  6. * @param {function}opt.success ajax发送并接收成功调用的回调函数
  7. */
  8. function ajax(options) {
  9. options = options || {};
  10. options.method = options.method.toUpperCase() || 'POST';
  11. options.url = options.url || '';
  12. options.async = options.async || true;
  13. options.data = options.data || null;
  14. options.success = options.success || function () {};
  15. options.error = options.error || function () {};
  16.  
  17. var xmlhttp = null;
  18. if(XMLHttpRequest) {
  19. xmlhttp = new XMLHttpRequest();
  20. } else {
  21. xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
  22. }
  23. var params = [];
  24. for(key in params) {
  25. params.push(key + '=' + params[key]);
  26. }
  27. var postData = params.join('&');
  28.  
  29. if(options.method == 'GET') {
  30. xmlhttp.open(options.method, options.url, options.async);
  31. xmlhttp.send();
  32. } else if (options.method == 'POST') {
  33. xmlhttp.open(options.method, options.url, options.async);
  34. xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  35. xmlhttp.send(postData);
  36. }
  37.  
  38. xmlhttp.onreadystatechange = function () {
  39. if(xmlhttp.readyState == 4) {
  40. switch (xmlhttp.status) {
  41. case 200:
  42. options.success(xmlhttp.responseText);
  43. break;
  44. case 404:
  45. options.error('Not Found');
  46. break;
  47. default:
  48. options.error('未知错误');
  49. }
  50. }
  51. };
  52. }
  53.  
  54. // 使用
  55. ajax({
  56. method: 'POST',
  57. url: './server/demo_get.json',
  58. data: {
  59. data1: 'aaa',
  60. data2: 'bbb'
  61. },
  62. success: function (response) {
  63. console.log(response);
  64. },
  65. error: function (err) {
  66. console.log(err);
  67. }
  68. });

这个是从网上学习并改造的,自己重写了一遍,可以运行。

自封装ajax的更多相关文章

  1. 使用原生JS封装Ajax

    使用原生 的JS封装 Ajax,实现 仿JQuery的Ajax,post,get三种异步请求方式: var MAjax = { //根据浏览器创建异步对象 createXhr: function () ...

  2. 原生javascript封装ajax和jsonp

    在我们请求数据时,完成页面跨域,利用原生JS封装的ajax和jsonp: <!DOCTYPE html> <html lang="en"> <head ...

  3. AJAX编程-封装ajax工具函数

    即 Asynchronous [e'sɪŋkrənəs] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用.本质是在HTTP协议的基础上以异步的方式与服务器 ...

  4. javascript 【封装AJAX】

    post function createXHR() { if (typeof XMLHttpRequest != 'undefined') { return new XMLHttpRequest(); ...

  5. 封装ajax原理

    封装ajax原理 首先处理 用户如果不传某些参数,设置默认值 type默认get 默认url为当前页 默认async方式请求 data数据默认为{} 处理用户传进来的参数对象 遍历,拼接成key=va ...

  6. 04.封装ajax

    <script> //封装ajax // 函数名 ajax // 函数的参数 // url: 请求的地址 // type: 请求的方式 get /post // data: 要上传的数据 ...

  7. 自定义封装ajax,复制即可用

    支持get.post请求 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  8. 封装ajax,让调用变得简单优化

    思考一下: 通常我们在使用ajax来发送接口请求时,每一次都会调用ajax固定的元素,比如data.url.method.success.error等.那么我们想一下能不能先把ajax封装起来,在每次 ...

  9. 原生JS封装ajax方法

    http://blog.sucaijiayuan.com/article/89 jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只 ...

  10. 封装Ajax框架!(代码篇)

    写在前面的话,如果中间有什么不明白的,请先看封装ajax框架!(前言篇) 1.添写一个封闭函数 (function(){})(); 在一个项目中,可能会引用多个js框架,如果函数名相同,会有命名冲突, ...

随机推荐

  1. app.use和app.get的区别及解析

    转载至:http://blog.csdn.net/wthfeng/article/details/53366169 写在前面:最近研究nodejs及其web框架express,对app.use和app ...

  2. adminlte+layui框架搭建3 - layui弹出层

    在amdinlte首页引入layui.js 和layui.css后添加代码 <script> layui.use(['layer'], function () { var layer = ...

  3. 移动端适配1px问题

    (function(document) { var dcl = document.documentElement, wh; var scale = 1/window.devicePixelRatio; ...

  4. SQL语句之行操作

    SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 关系型数据库的存储形式 在关系型数据库中,数据都是以类似于Excel表格的形式存储 ...

  5. SQL Server2012如何更改服务器的名称

    Problem: sql server 2012 安装完毕后,连接数据库只能使用 机器名\数据库实例 的方式,想用 localhost 或 . 作为服务器名称不可以 Solution: 参考:http ...

  6. Go 语言 基础 【第一篇】:package fmt导入

    package  main 解释:只要你 一个可执行 程序

  7. HDU6470 ()矩阵快速幂

    http://acm.hdu.edu.cn/showproblem.php?pid=6470 题意:f[n] = f[n-1] + f[n-2]*2 + n^3; f[1] =1 ; f[2] = 2 ...

  8. JS window,onload 与 $().read()

    JS:window.onload的使用介绍 .在body标签里面 .在JS语句调用 .同时调用多个函数 .JS调用多个函数 .自定义的函数多次调用 jquery $(document).ready() ...

  9. PIE SDK栅格数据集的读写

    1. 功能简介 栅格数据包含很多信息,在数据的运用中需要对数据的信息进行读取或写入,目前PIE SDK支持多种数据格式的数据读取和写入,下面对栅格数据格式的数据读写功能进行介绍. 2. 功能实现说明 ...

  10. .reverse ,join,split区分

    * 1:arrayObject.reverse() * 注意: 该方法会改变原来的数组,而不会创建新的数组. * 2:arrayObject.join() * 注意:join() 方法用于把数组中的所 ...