100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > CMS可视化项目-iframe嵌套 token Object.keys(data).map()遍历对象包数组的数据 select下拉菜单

CMS可视化项目-iframe嵌套 token Object.keys(data).map()遍历对象包数组的数据 select下拉菜单

时间:2018-11-10 21:50:33

相关推荐

CMS可视化项目-iframe嵌套 token Object.keys(data).map()遍历对象包数组的数据 select下拉菜单

iframe嵌套单页面

iframe是一个行内块元素,如果希望改变它的位置就需要转块级元素

<style>/* iframe是一个行内块元素,如果希望改变它的位置就需要转块级元素 */iframe{width: 800px;height: 600px;display: block;margin: 100px auto;}</style></head><body><iframe src="./index1.html" frameborder="0"></iframe> </body>

iframe嵌套多页面

嵌套多页面,需要使用 iframe + a 标签

(1) a标签的target属性 : 在什么位置打开href网页

_self :当前页面打开

_blank :新页面打开

iframe标签name属性 :iframe标签中打开

(2)iframe标签嵌套多网页思路

a. 给iframe标签设置一个name属性

b 给a标签设置href决定条转什么网页,设置iframe标签name属性决定在 iframe标签跳转

<style>iframe{width: 800px;height: 600px;display: block;margin: 100px auto;}</style></head><body><!-- 嵌套多页面,需要使用 iframe + a 标签 (1) a标签的target属性 : 在什么位置打开href网页_self :当前页面打开_blank :新页面打开iframe标签name属性 :iframe标签中打开(2)iframe标签嵌套多网页思路a. 给iframe标签设置一个name属性b 给a标签设置href决定条转什么网页,设置iframe标签name属性决定在 iframe标签跳转--><a href="./index1.html" target="fm">页面1</a><a href="./index2.html" target="fm">页面2</a><a href="./index3.html" target="fm">页面3</a><iframe src="./index1.html" frameborder="0" name="fm"></iframe></body>

token实现

1..token是什么 : 认证令牌

token是一串经过加密之后的字符串,相当于是用户一种身份认证令牌。类似于古代的腰牌,现代的工牌。 见到这个牌子,服务器才知道你是自己人,才会把数据响应给你。

2.token应用 : 免登录

有了token之后,用户就不需要每一次访问网站都要先输入账号密码,才能拿到数据了。 而是只需要登录一次,以后拿着token,服务器就知道你是哪一个用户了。

2.token的工作流程

token工作流程分为三个步骤

第一步: 用户发送登录请求

第二步:服务器响应token,客户端将token存储在本地

第三步: 登录之后的所有请求,用户都需要在请求头中发送token

图解

使用步骤:

* 1. 接收 登录请求ajax时候得到的token,将其存放在本次存储中

```js

localStorage.setItem('mytoken', res.data.token )

```

* 2. 在 其他接口的请求头中添加Authorization,(使用axios框架添加请求头的方法如下)

```js

headers:{

'Authorization' : localStorage.getItem('mytoken')

}

```

*** `由于之后的每次ajax请求都需要 在请求头中添加,所有,推荐使用axios拦截器`

`在请求拦截器中加入`:

> //如果当前浏览器有token,就把token加到请求头中

> let mytoken = localStorage.getItem('mytoken')

> if (mytoken) {

> config.headers.Authorization = mytoken

> }

`在响应拦截器中加入`:

> //如果error.response.status == 401 说明token过期,获取没有token.

> //需要提示用户重新登录

> if (error.response.status == 401) {

> alert('请重新登录')

> location.href = './login.html'

> }

`具体代码如下`:

```js

// 2.1 添加请求拦截器

axios.interceptors.request.use(function (config) {

// 在发送请求之前做些什么

//如果当前浏览器有token,就把token加到请求头中

let mytoken = localStorage.getItem('mytoken')

if (mytoken) {

config.headers.Authorization = mytoken

}

return config;

}, function (error) {

// 对请求错误做些什么

return Promise.reject(error);

});

// 2.2 添加响应拦截器

axios.interceptors.response.use(function (response) {

// 对响应数据做点什么

return response;

}, function (error) {

// 对响应错误做点什么

//如果error.response.status == 401 说明token过期,获取没有token.

//需要提示用户重新登录

if (error.response.status == 401) {

alert('请重新登录')

location.href = './login.html'

}

return Promise.reject(error);

});

```

(1)数组嵌套数组

(2)对象嵌套数组

Object.keys 静态方法 与map() 结合方法

数组嵌套数组

let arr = [{"id":"13922","name": "史磊","group": 1,"score": [91,55,94,30,""]},{"id":"13923","name": "史磊","group": 1,"score": [91,55,94,30,""]},{"id":"13924","name": "史磊","group": 1,"score": [91,55,94,30,""]},{"id":"13925","name": "史磊","group": 1,"score": [91,55,94,30,""]},{"id":"13926","name": "史磊","group": 1,"score": [91,55,94,30,""]}]document.body.innerHTML = arr.map(item=>`<tr><td>${item.id}</td><td>${item.name}</td><td>${item.score[0]}</td><td>${item.score[1]}</td><td>${item.score[2]}</td><td>${item.score[3]}</td><td>${item.score[4]}</td></tr><br>`).join('')

(2)对象嵌套数组

Object.keys(data)结合map()方法

let obj = {"13922": {"name": "史磊","group": 1,"score": [91,55,94,30,""]},"13923": {"name": "周娜","group": 2,"score": [51,75,90,"",""]},"13924": {"name": "龙明","group": 3,"score": [84,74,81,"",""]},"13925": {"name": "谭洋","group": 4,"score": [61,48,36,"",""]},"13926": {"name": "龙洋","group": 5,"score": [66,73,41,"",""]},}//(1)先使用Object.keys( 对象名 ) 获取所有的属性名// Object.keys( obj ).map(item=>{//console.log(item)//console.log( obj[ item ].name )//console.log( obj[ item ].score )// })document.body.innerHTML = Object.keys( obj ).map(item=>`<tr><td>${item}</td><td>${obj[ item ].name}</td><td>${obj[ item ].score[0]}</td><td>${obj[ item ].score[1]}</td><td>${obj[ item ].score[2]}</td><td>${obj[ item ].score[3]}</td><td>${obj[ item ].score[4]}</td></tr><br>`).join('')

select下拉菜单

1.select标签是form表单中特殊的标签 : 既是双标签, 也是表单元素

* 拥有双标签的属性: innerText 拥有表单元素的属性: value

2.select标签value值(选中值) : 到底是获取value还是获取innerText

2.1 select标签的value值, 不会获取自身的value, 而是获取option标签的value

2.2 如果option标签有value和innerText,则优先获取value

2.3 如果option标签没有value,则会获取innerText

3.一句话总结:

开发中, 一般把服务器需要的参数放在value中. 把用户看的数据放到innerText中。

<select name="" id="" value="111"><option value="1">湖北省</option><option value="2">湖南省</option><option value="3">广东省</option></select>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。