HTML封装AJAX请求,在请求里面写登录的逻辑 ajax 网络请求 post
调用方法: 先引用config.js,然后调用封装网络请求。
里面三个参数 1.url, 2.请求需要提交的数据, 3.请求类型
// 获取二维码、背景图片接口
getScheduleInfo() {var url = '/v1/basketball/getQRCode.do';var params = {phone: '13977284414'}config.RequestData(url, params,'get').then(res => {console.log('获取二维码、背景图片接口', res.module);}).catch(error => {console.log(error);})
},
config.js代码:
这里根据我代码的实际情况,在封装的网络请求里面做了登录的判断,如果没有登录,就先调登录接口,然后再重新请求。
这里我把用户唯一标识(session)和活动id(activityId)也放到 data 中,并且根据不同的情况用不同的域名进行网络请求。可以根据你自己的需求做修改。
const config = {USERhttpURL: 'https://aaa.cn', // 测试环境1httpURL: 'https://bbb.cn', //测试环境2// 授权登录接口 toLoginOk: (url, data = {}, method = 'post', resolve) => {console.log('调用登录接口,获取session')var login_url;var login_params = {auth_user: config.getUrlkey(location.href).auth_user ? config.getUrlkey(location.href).auth_user : ''}if (config.getUrlkey(location.href).activityId) {login_url = config.httpURL + '/actcenter/v1/user/login.do';login_params.activityId = config.getUrlkey(location.href).activityId;} else {login_url = config.USERhttpURL + '/v1/user/login.do';console.log('是个人中心接口---toLoginOk', login_url)}$.ajax({type: 'post',url: login_url,contentType: 'application/x-www-form-urlencoded;charset=utf-8',data: login_params,dataType: "json",complete: res => {res = res.responseJSONif (res.success) {var session = res.module; // session if (session) {if(config.getUrlkey(location.href).activityId){localStorage.setItem('session', session); // 设置缓存}else{localStorage.setItem('userSession', session); // 设置缓存}config.ajaxIng(url, data, method, resolve);}} else {}}})},// 网络请求中ajaxIng(url, data, method, resolve) {if (config.getUrlkey(location.href).activityId) {url = config.httpURL + url;data.activityId = config.getUrlkey(location.href).activityId;data.session = localStorage.getItem('session');} else {url = config.USERhttpURL + url;data.session = localStorage.getItem('userSession');console.log('是个人中心接口---ajaxIng', url)}$.ajax({type: method,url: url,contentType: 'application/x-www-form-urlencoded;charset=utf-8',data: data,dataType: "json",complete: res => {if (res.success) {resolve(res); // 成功} else {reject(res); // 失败}}})},// 封装数据请求/*** url 请求的api 必传* data 请求参数{} 非必传* method 请求方法 get、post 非必传*/RequestData: (url, data = {}, method = 'post') => {return new Promise((resolve, reject) => {//如果是篮球活动,就会有 configActivityId 篮球活动用的是 session 个人中心用的是 userSessionif (config.getUrlkey(location.href).activityId) {if (localStorage.getItem('session')) {config.ajaxIng(url, data, method, resolve);} else {config.toLoginOk(url, data, method, resolve)}} else {if (localStorage.getItem('userSession')) {config.ajaxIng(url, data, method, resolve);} else {config.toLoginOk(url, data, method, resolve)}}})},// url参数解析getUrlkey: function(url) {var params = {};try {var urls = url.split("?");var arr = urls[1].split("&");for (var i = 0, l = arr.length; i < l; i++) {var a = arr[i].split("=");params[a[0]] = a[1];}} catch (e) {//TODO handle the exception}return params;}
}
相关文章:

oye pandora_我尝试了Pandora出色的功能优先级排序方法。 这是我学到的。
oye pandoraby Josh Temple通过乔什坦普尔 我尝试了Pandora出色的功能优先级排序方法。 这是我学到的。 (I tried Pandora’s brilliant method for feature prioritization. Here’s what I learned.) 潘多拉(Pandora)的方法和3美元的便签纸如何使利益相关者的管理变得轻而易…

2016-2017-2软件工程课程总结
2016-2017-2软件工程课程总结 本学期的软件工程课程终于在大家的共同努力下圆满落幕了,我们的暑假也正式开启,终于有时间写写这门课的总结了。 在2016年下半学期末的时候课程组就决定使用邹欣老师的书《构建之法》,由课程组长王瑞老师带领入构…

asp.net mvc jqgrid 同一个页面查询不同的表,jqgrid显示不同表的表头和数据并且分页...
基于我上一篇文章<a href"http://www.cnblogs.com/alasai/p/4765756.html">asp.net mvc excel导入</a>中不同的部门上传不同的excel文件类型,当在同一个页面查询时怎么办呢。 解决方案:根据传过来的表名和时间参数一次性把数据全部…

降维后的高维特征的参数_高维超参数调整简介
降维后的高维特征的参数by Thalles Silva由Thalles Silva 高维超参数调整简介 (An introduction to high-dimensional hyper-parameter tuning) 优化ML模型的最佳做法 (Best practices for optimizing ML models) If you ever struggled with tuning Machine Learning (ML) mo…

细细品味大数据--初识hadoop
初识hadoop 前言 之前在学校的时候一直就想学习大数据方面的技术,包括hadoop和机器学习啊什么的,但是归根结底就是因为自己太懒了,导致没有坚持多长时间,加上一直为offer做准备,所以当时重心放在C上面了(虽…

js中Array数组中的常用方法汇总
Array的push与unshift方法性能比较分析从原理就可以知道,unshift的效率是较低的。原因是,它每添加一个元素,都要把现有元素往下移一个位置。unshift比push要慢差不多100倍!Array有一个叫做reverse的方法,能够把一个数组…

vue写一个通用的toast弹窗 toast 弹窗 提示
效果图 代码 <!DOCTYPE html> <html lang"en"><head><title>弹窗</title><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0, user-scalableno, minimum-s…

我对Node.js Core的首次贡献中学到了什么
by Yael Hermon通过Yael Hermon 我对Node.js Core的首次贡献中学到了什么 (What I Learned from My First Contribution To Node.js Core) A couple of weeks ago my very first PR for Node.js core was merged! A few days later, I decided to tweet about it and share ho…

SHA204A加密芯片配置
1、参考配置文章:http://blog.csdn.net/a5882230/article/details/522148452、可以选slot configuration 1作为密钥区,该区的配置应为:0x81 81,对应的data 0的数据就密钥数据。3、slot configuration的配置有7个参数,其…

[剑指offer] 二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列 P157 题目:输入一个数组,判断这个数组是不是一个二叉搜索树的后序遍历的结果。 solution:我们知道后序遍历序列的最后一个item是根节点,如果确实是二叉搜索树的后序遍历结果,那么在[0,N-2]中…

HbuilderX中的git的使用 git HbuilderXgit HbuilderX 使用git
【前戏】:得在HubilderX中找到 "工具"->"插件安装" -> "Git插件" 。 【提交代码】:(1)选中该项目的文件,右键,Git提交 (2)填写提交信息、查看…

Swift与Objective-C:与恐龙有关的趋势
by Colin Smith通过科林史密斯 Swift与Objective-C:与恐龙有关的趋势 (Swift vs. Objective-C: The trending up-and-comer vs. the dinosaur) Swift的简短历史 (A short history of Swift) I remember how pivotal it was when Swift was introduced at Apple’s …

我的JavaScript学习笔记
1. 那些老旧的实例可能会在 <script> 标签中使用 type"text/javascript"。现在已经不必这样做了。JavaScript 是所有现代浏览器以及 HTML5 中的默认脚本语言。 2. <head> 或 <body> 中的 JavaScript 您可以在 HTML 文档中放入不限数量的脚本。 …

获取枚举值上的Description特性说明
/// <summary> /// 获取枚举值上的Description特性说明 /// </summary> /// <typeparam name"T">枚举类型</typeparam> /// <param name"obj">枚举值</param> /// <returns></returns> public static str…

微信小程序实时获取用户经纬度
注意,使用这个功能之前手机得先打开位置信息。 现在app.json配置 {"pages": ["pages/map/map","pages/index/index","pages/register/register","pages/logs/logs"],"window": {"backgroundTex…

pwa js_如何在互联网信息亭中实现PWA和Barba.js
pwa jsby Nino Mihovilić由NinoMihovilić 如何在互联网信息亭中实现PWA和Barba.js (How to Implement a PWA and Barba.js into internet kiosks) The project we’ll describe here is an interactive internet kiosk that’s used as an extension for the LikeUs mobile …

Vant 组件库(VUE)的使用 Vant滚动选择器 选择器 传值
在 vue- cli 项目中安装 官方文档链接 npm ( 后面内容需要在控制台终端输入) # 通过 npm 安装 npm i vant -S 自动按需引入组件:babel-plugin-import 是一款 babel 插件,它会在编译过程中将 import 的写法自动转换为按需引入的方式 # 安装插件 npm…
MySQL的安装过程
近期对MySQL做了一些研究。曾经主要接触的是SQL SERVER。所以,今天对该安装过程做了一些总结以及使用过程中的一些心得。并分享给大家。记得前面。分享过一篇关于数据库的几种连接方式。而本系列文章。将以对数据库的详细操作为主。 MySQL是…

一个球从100米高度自由落下,每次落地后反弹回原高度的一半; * 再落下,求在第几次之后反弹高度小于0.1米, * 并计算在这一次落地时共经过多少米?...
package com.db2;/*** 一个球从100米高度自由落下,每次落地后反弹回原高度的一半; * 再落下,求在第几次之后反弹高度小于0.1米,* 并计算在这一次落地时共经过多少米?* * author denny**/ public class Demo1 {static …

在遗传算法中出现等式约束_排序算法中的稳定性-等式的处理
在遗传算法中出现等式约束by Onel Harrison通过Onel Harrison 排序算法中的稳定性-等式的处理 (Stability in Sorting Algorithms — A Treatment of Equality) Algorithms are at the heart of computer science. Algorithms used for sorting are some of the most fundamen…

vconsole 调试 查看LOG VUE在手机上调试 手机查看h5的日志
简单介绍下vConsole: vConsole是一个由微信公众平台前端团队研发的web前端开发者面板,可用于展示console日志,方便开发、调试。 使用场景1,在vue-cli 构建的项目中使用: 通过npm安装和使用: npm install vconsole -…

无参数的lambda匿名函数
lambda 语法: lambda [arg1[,arg2,arg3....argN]]:expression 1.单个参数的: g lambda x:x*2 print g(3) 结果是6 2.多个参数的: m lambda x,y,z: (x-y)*z print m(3,1,2) 结果是4 3.无参数 # 使用def定义函数的方法 def true():return Tru…

scrum项目管理_Scrum,用于初创企业(或针对该项目的任何项目)
scrum项目管理Scrum is a lightweight framework designed to help small, close-knit teams of people develop complex products.Scrum是一个轻量级框架,旨在帮助紧密联系的小型团队开发复杂的产品。 Of course, Scrum isn’t just applicable to software proje…

升级Jekyll 3.0
每一次的升级都得又一次折腾一次,jekyll也不例外 从jekyll 2.5.2 升级为jekyll 3.0.1 错误一: jekyll 3.0.1 | Error: Permission denied - bind(2) for 127.0.0.1:4000 端口被占有,打开_config.yml 在最后加上一行 port: 5001 (其它也可)问题解决 错误…

jquery学习(3)--高级选择器
自己手写的学习笔记。常规选择器: /****************学习--高级选择器(1)****************/---高级选择器:ie7层次选择器:后代选择器 ul li a $(ul li a) 获取追溯到的多个dom对象 ie6子选择器 …

h5 返回上一页并且刷新页面
window.history.go(-1) 和 window.history.back(-1) 都用了,安卓会刷新,IOS系统不刷新(IOS会读取浏览器缓存) 下面用了一种比较low的方法,但是好歹实现了。。 //home.html localStorage.setItem(homeHref,window.loc…

kotlin中的异常处理_如何使用assertFailsWith在Kotlin中测试异常
kotlin中的异常处理by Daniel Newton丹尼尔牛顿 如何使用assertFailsWith在Kotlin中测试异常 (How to test exceptions in Kotlin with assertFailsWith) I wanted to write this short post to highlight the assertFailsWith function available to Kotlin. This function m…

学习dubbo框架的问题
InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输出字节流;InputStreamReader : 是字节流与字符流之间的桥梁,能将字节流输出为字符流,并且能为字节…

Android 控件 之 Menu 菜单
http://www.cnblogs.com/Mrs-cc/archive/2012/07/21/2603042.html 1.OptionsMenu (选项菜单)用法总结使用方法:方法一:添加菜单项:onCreateOptionsMenu(Menu menu)中添加menu.add(Menu.NONE,Men…

VUE保存页面的数据,VUE页面显示就执行某个函数,VUE页面隐藏就执行某个函数
用 VUE 默认的 keep-alive 组件实现 保存页面的数据,页面显示就执行某个函数,页面隐藏就执行某个函数实现方式: 1.在路由内设置页面是否需要缓存; 示例代码:(在需要的组件里面添加meta 对象,keepAlive属…