原生JS封装ajax方法

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4   <meta charset="utf-8">
 5   <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 6   <title>Examples</title>
10   <script>
11
12     //将对象序列化
13     function params(data) {
14       var arg = [];
15       for (var i in data) {
16         arr.push(encodeURIComponent(i) + ‘=‘ + encodeURIComponent(data[i]));
17       }
18       return arr.join(‘&‘);
19     }
20
21     //封装ajax
22     function ajax(obj) {
23       //创建xhr对象;
24       obj.xhr = new XMLHttpRequest();
25       //后面随机数防止浏览器缓存
26       obj.url = url + "?rand=" + Math.random();
27       //序列化对象
28       obj.data = params(obj.data);
29       //当是get请求时
30       if (obj.method = ‘get‘) {
31         //当前面没设置随机数时
32         obj.url += obj.url.indexOf(‘?‘) == -1 ? ‘?‘ +obj.data : ‘&‘ + obj.data;
33       }
34       //异步调用
35       if (obj.async == true) {
36         //监听响应状态
37         xhr.onreadystatechange = function() {
38           if (xhr.readyState == 4) {
39             callback();
40           }
41         };
42       }
43       //启动HTTP请求
44       xhr.open(obj.method, obj.url, obj.aysnc);
45       //当是post请求时
46       if(obj.method === ‘post‘) {
47         //模仿表单提交
48         xhr.setRequestHeader(‘Content-Type‘, ‘application/x-www-form-urlencoded‘);
49         //发送HTTP请求-post
50         xhr.send(obj.data);
51       } else {
52         //发送HTTP请求-get
53         xhr.send(null);
54       }
55       //同步调用
56       if (obj.async == false) {
57         callback();
58       }
59       //回调函数传参
60       function callback() {
61         if (xhr.atatus == 200) {
62           obj.success(xhr.responseText);
63         } else {
64           alert("失败,失败状态码:" + xhr.status);
65         }
66       }
67     }
68
69     document.addEventListener(‘click‘, function() {
70       ajax({
71         method: ‘get‘,
72         url: ‘demo3.php‘,
73         data: {
74           ‘name‘ = ‘Lee‘,
75           ‘age‘ = 100
76         },
77         success: function(text) {
78           alert(text);
79         },
80         async = true
81       });
82     }, false);
83   </script>
84 </head>
85 <body>
86
87 </body>
88 </html>
时间: 2024-10-10 06:53:07

原生JS封装ajax方法的相关文章

原生js封装ajax方法,包含jsonp和网络超时处理

function ajax(options) { options = options || {}; options.type = (options.type || "GET").toUpperCase(); options.dataType = options.dataType || 'json'; options.async = options.async || true; options.timeout=options.timeout||8000;//超时处理,默认8s var p

原生JS封装AJAX

今天我们来说说利用原生JS封装AJAX. jquery框架的AJAX方法确实很好用,但有时候我们写的页面需要引入多个JS插件,不一定哪个插件就会和jquery发生冲突,导致jquery用不了了.或者页面比较简单,不需要加重浏览器的负担,这时我们自己封装一个AJAX就是一个很好的办法. //将数据转换成 a=1&b=2格式;function json2url(json){   var arr = [];   //加随机数防止缓存;   json.t = Math.random();   for(v

原生JS封装Ajax插件(同域&amp;&amp;jsonp跨域)

抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正确的地方,还望指正^_^ 一.Ajax核心,创建XHR对象 Ajax技术的核心是XMLHttpRequest对象(简称XHR),IE5是第一款引入XHR对象的浏览器,而IE5中的XHR对象是通过MSXML库中的一个ActiveX对象实现的,因此在IE中可能有3个版本,即MSXML2.XMLHttp.

原生js封装ajax:传json,str,excel文件上传表单提交

由于项目中需要在提交ajax前设置header信息,jquery的ajax实现不了,我们自己封装几个常用的ajax方法. jQuery的ajax普通封装 var ajaxFn = function(uri, data, cb) { $.ajax({ url: uri, type: 'POST', dataType: 'json', data: data, }) .done(cb) .fail(function() { console.log("error"); }) .always(f

原生JS封装ajax以及request

一.封装原生的xhr为ajax类 xhr以及用法见之前的文章 1.根据url确定请求的头部以及别的信息. var _headerConfig = {}; if(url.indexOf('getcaptcha') !== -1) { _headerConfig = { Accept: 'image/png', responseType: 'arraybuffer', } } else if(url.indexOf('files/upload') !== -1) { _headerConfig =

原生js封装ajax代码

1.ajax函数封装: 1 /* 2 *author: Ivan 3 *date: 2014.06.01 4 *参数说明: 5 *opts: {'可选参数'} 6 **method: 请求方式:GET/POST,默认值:'GET'; 7 **url: 发送请求的地址, 默认值: 当前页地址; 8 **data: string,json; 9 **async: 是否异步:true/false,默认值:true; 10 **cache: 是否缓存:true/false,默认值:true; 11 **

原生js实现ajax方法

下面是一个比较完整的Ajax function ajax(){ var ajaxData = { type:arguments[0].type || "GET", url:arguments[0].url || "", async:arguments[0].async || "true", data:arguments[0].data || null, dataType:arguments[0].dataType || "text&qu

原生js封装ajax,实现跨域请求

描述: 需要ajax跨域请求,用cors跨域方案.服务端设置: header('Access-Control-Allow-Origin: http://front.ls-la.me'); header('Access-Control-Allow-Headers: X-Requested-With'); 设置了: 后端需要的头信息,原生ajax以表单方式post提交数据,json数据data转换成key1=val1&key2=val2 的字符串格式 1 var ajaxHdFn = functio

原生JS封装Ajax(原理)

1.创建一个ajax对象 var oAjax=new XMLHttpRequest();2.连接 oAjax.open('GET','a.txt'+'?'+data,true); oAjax.open('POST',url,true);3.发送 oAjax.send(); oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); oAjax.send(data);4.接收 监听 oAjax.onread