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或项目需求很简单,没有很多交互功能,只 ...
随机推荐
- 【转】监听器(Listener)学习
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其它对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监听的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通 ...
- Apollo与ROS
Apollo项目基于ROS,但是对其进行了改造,主要包括下面三个方面: 通信性能优化 去中心化网络拓扑 数据兼容性扩展 通信性能优化 自动驾驶车辆中包含了大量的传感器,这些传感器可能以非常高频的速度产 ...
- Springboot+Mybaits之两张表同时插入数据
项目需求是,一张表添加数据的同时,另外一张表也需要添加数据,话不多说,直接上代码. 1.Controller,我把两个DTO直接放到一个@RequestBody中.其中throws是后台获取当前时间抛 ...
- spool_sqlldr
--0.制表符chr(9) 换行符chr(10) 回车符chr(13) windows下批处理.bat linux下批处理.shset echo offset feedback offset page ...
- Scyther-manual ------BNF
1.Scyther 协议安全模型的验证实例 第一部分: 打开协议模型 ,设置攻击变量的参数执行分析 Scyther is a tool for the formal analysis o the ...
- IDEA适合的插件
一:安装方法 在线安装 二. 官网插件地址 http://plugins.jetbrains.com/ 三.常用插件 一. ) Alibaba Java Coding Guidelines ...
- linux常用命令及使用技巧(一)
shell命令格式:command [options][arguments] shell的通配符 *匹配任意一个或多个字符 ?匹配任意单一字符 []匹配任何包含在方括号内的单字符 shell的重定向: ...
- java微信获取经纬度转换为高德坐标小结
https://blog.csdn.net/dragon974539495/article/details/78894499
- ASP.NET Core快速入门学习笔记(第1章:介绍与引入)
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务1:课程介绍 任务2:环境安装 下载地址:https://dotnet.m ...
- Linux版 php5.4 升级php7
开篇 本操作是在VirtualBox里面进行的,所以开篇先说下,本地如何操作VB里面的Linux 1.secureCRT登陆虚拟机ubuntu 直接连接虚拟机的ip (ifconfig)会提示拒绝访问 ...