[日常记录]原生JS写Ajax的请求函数
2016-09-29 00:00
441 查看
function ajax(options){ var xmlhttp,data; if(window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); }else{ xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); } var method = (options.method || 'GET').toUpperCase(), url = options.url, async = options.async || 'false'; var onReady = function(callback){ xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState === 4 && xmlhttp.status === 200){ callback(JSON.parse(xmlhttp.responseText)); } } } if(method === 'GET'){ url += '?'; for (var index in options.data) { if (options.data.hasOwnProperty(index)) { url += index + '=' + encodeURI(encodeURI(options.data[index])) + '&'; } } url = url.slice(0,-1); xmlhttp.open(method,url,async); onReady(options.callback); xmlhttp.send(); }else{ data = new FormData(); for (var index in options.data) { if (options.data.hasOwnProperty(index)) { data.append(index,encodeURI(encodeURI(options.data[index]))); } } xmlhttp.open(method,url,async); // xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=utf-8'); onReady(options.callback); xmlhttp.send(data); } } /***********************************************************************/ FormDate对象是XMLHttpRquest2级的类型,利用XHR对象发送FormDate生成的数据时,可以直接发送,不需要设置头部,XHR对象能够会自动识别数据类型是FormDate的实例,并配置相关的头部; 如果你使用的是XMLHttpRquest级的方法,没有FormDate方法,发送数据时需要设置头部为"application/x-www-form-urlencoded;",然后把序列化后的表单数据发送到服务器。这里使用混淆了。 jQuery的ajax()方法发送的数据默认是序列化后的字符串,FormDate方法是一组键值对,所以不一样。 你可以通过设置jQuery ajax的一些属性来实现和你封装后一样的格式;
相关文章推荐
- 原生JS写Ajax的请求函数功能
- 原生JS写Ajax的请求函数
- 原生JS写Ajax的请求函数
- 原生JS写Ajax的请求函数
- 用JS写Ajax的请求函数(1)
- js原生ajax请求get post笔记
- 原生js实现ajax 发送post请求
- js原生ajax请求代码示例
- 原生JS实现Ajax跨域请求flask响应内容
- 原生 JS Ajax,GET和POST 请求实例代码
- js原生ajax请求get post笔记
- Ajax练习二(原生JS异步请求)
- js 框中字符数提示 ajax异步请求函数可能出错点
- 原生JS发送ajax请求
- 原生js版ajax请求
- 原生JS的ajax处理json数据格式的异步请求完整例子
- js函数等待ajax请求执行完再执行之下的js代码
- 原生JS封装AJAX请求
- 原生JS实现Ajax跨域请求flask响应内容
- 原生JS实现Ajax的GET POST请求