04.封装ajax
<script>
//封装ajax
// 函数名 ajax
// 函数的参数
// url: 请求的地址
// type: 请求的方式 get /post
// data: 要上传的数据 要求是键值对的形式
// 函数的返回值 没有返回值 // 增加的功能:
// 1. 如果没有传请求的地址,就没有必要执行后面的代码
// 2. 默认是get, 如果传post,则发post请求
// 3. 不需要再上传键值对的字符串了name=zs&age=18&sex=m
// 而是上传一个对象
// {
// name: 'zs',
// age: 18,
// sex: 'm'
// }
// 优化前: 参数列表的问题: 如果记不住顺序,那么传参会错误.少些参数,也会错误
// 优化后: 传入一个对对象. 不需要考虑顺序. 少写type,函数照样可以正常运行
// option要求是一个对象
// option.url
// option.type
// option.data // 最后一个功能: ajax({
url: '../test.php',
type: 'post',
data: {
name: 'zs'
},
success: function(res) {
//当数据成功的响应回来,那么这个函数会自动被调用
// 而且,希望将获取到的数据,传入到这个回调函数中
// alert('响应成功了');
console.log(res);
// JSON.parse(res)
}
});
function ajax(option) {
//判断是否传入对象,
if (option.constructor !== Object) {
console.log('对象');
return;
} //获取参数
var url = option.url;
var type = option.type;
var data = option.data; //功能 1 没有传url return
if (!url) {
return;
}
//功能 2 请求类型
type = type === 'post' ? 'post' : 'get';
//功能 3 将 data 从对象转成 用 & 隔开的键值对的 字符串
var arr = [];
for (var k in data) {
arr.push(k + '=' + data[k]);
}
data = arr.join('&'); //1.创建对象
var xhr = new XMLHttpRequest();
//2.设置请求行
if (type === 'get') {
url += '?' + arr;
data = null;
}
xhr.open(type, url);
//3.设置请求头
if (type === 'post') {
xhr.setRequestHeader(
'content-type',
'application/x-www-form-urlencoded'
);
}
//4.设置请求主体并发送请求
xhr.send(data);
//5.接收响应
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var result = xhr.responseText;
if (xhr.getResponseHeader('content-type').indexOf('json') != -1) {
var obj = JSON.parse(result);
option.success & option.success(obj);
} else if (
xhr.getResponseHeader('content-type').indexOf(xml) != -1
) {
option.success && option.success(xhr.responseXML);
} else {
option.success && option.success(result);
}
} else {
//失败
option.error && option.error();
}
};
}
</script>
04.封装ajax的更多相关文章
- 使用原生JS封装Ajax
使用原生 的JS封装 Ajax,实现 仿JQuery的Ajax,post,get三种异步请求方式: var MAjax = { //根据浏览器创建异步对象 createXhr: function () ...
- 封装Ajax框架!(前言篇)
Ajax技术就是利用javascript和xml实现异步交互的功能. 首先先来介绍一下Ajax相关知识点,如果这些你都会的话,请直接跳转到封装ajax框架!(代码篇) 一.Ajax对象的创建 1.创建 ...
- 原生javascript封装ajax和jsonp
在我们请求数据时,完成页面跨域,利用原生JS封装的ajax和jsonp: <!DOCTYPE html> <html lang="en"> <head ...
- AJAX编程-封装ajax工具函数
即 Asynchronous [e'sɪŋkrənəs] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用.本质是在HTTP协议的基础上以异步的方式与服务器 ...
- javascript 【封装AJAX】
post function createXHR() { if (typeof XMLHttpRequest != 'undefined') { return new XMLHttpRequest(); ...
- 封装ajax原理
封装ajax原理 首先处理 用户如果不传某些参数,设置默认值 type默认get 默认url为当前页 默认async方式请求 data数据默认为{} 处理用户传进来的参数对象 遍历,拼接成key=va ...
- 自定义封装ajax,复制即可用
支持get.post请求 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 封装ajax,让调用变得简单优化
思考一下: 通常我们在使用ajax来发送接口请求时,每一次都会调用ajax固定的元素,比如data.url.method.success.error等.那么我们想一下能不能先把ajax封装起来,在每次 ...
- 原生JS封装ajax方法
http://blog.sucaijiayuan.com/article/89 jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只 ...
随机推荐
- 医学图像数据(三)——TCIA部分数据下载方式
前为止,本人还没有找到不需要账号的就可以部分下载的方式,因此这里讲的是需要注册账号下载部分数据的方法. 注意:下载部分数据需要注册账号 注册账号网址:https://public.cancerimag ...
- ubuntu常用命令及操作,包括安装CUDA
chmod Document 这里Document是一个文件夹,文件夹中还有好多子文件,可以发现执行了这条指令以后,其子文件夹的权限并没有改变. 要想改变其子文件夹的权限,应该执行 Document/ ...
- 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例
requests模块的其他用法 #通常我们在发送请求时都需要带上请求头,请求头是将自身伪装成浏览器的关键,常见的有用的请求头如下 Host Referer #大型网站通常都会根据该参数判断请求的来源 ...
- 三、vue之router
三.vue之router 此时vue的脚手架.创建项目已经完成. ... vue的运行流程 index.html-->main.js-->App.vue-->router/index ...
- JQuery插件:ScrollTo平滑滚动到页面指定位置
1.准备jQuery库和scrollTo.js插件. <script type="text/javascript" src="js/jquery.js"& ...
- jQuery基础操作
1.jQuery的介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库.jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Ajax交 ...
- laravel call传参
public function index(Request $request, ApplicationContract $app) { $type = $request->query('type ...
- 【微信小程序canvas】实现小程序手写板用户签名(附代码)
工作中公司业务需要的微信小程序用户签字功能 先看效果图: wxml: <view class="wrapper"> <view class="handB ...
- 微服务(Microservices)【翻译】
微服务 “微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务.目前,这种架构方式还没有准确的定 ...
- JS全角与半角转化小结
最近在做PC端网站的页面的一个表单校验,需要把全角输入转化成半角符号.之前没有了解过这些编码的知识,还是得Google一下查查资料,故简单总结一下. 什么是全角.半角 传统上,英语或拉丁字母语言使用的 ...