查漏补缺
1.jQuery
-
ajax的xhrFields参数
$.ajax({ type:'post', url: "http://172.16.0.152:3000/post.do", xhrFields: {withCredentials: true}, success: (data) => { console.log(data) }, error: (error) => { console.log('跨域失败') } })
xhrFields: {withCredentials: true}
会在跨域请求的时候带上cookie等信息,需要服务器端配置响应头,以允许跨域请求。下面是node
做服务端的栗子
const express = require('express')
//必须引用这个库才能获取cookie
const cookieParser = require('cookie-parser')
const app = express()
app.use(cookieParser())
app.all('*',(req,res,next)=>{
//判断对象是否为空
if(Object.keys(req.cookies).length !== 0){
res.setHeader("Access-Control-Allow-Credentials", true);
res.setHeader("Access-Control-Allow-Origin", req.headers.origin);
}
next()
})
app.get('/get.do',(req,res)=>{
res.status('200').json({type:'get'})
})
app.post('/post.do',(req,res)=>{
res.status('200').json({type:'post'})
})
app.listen('3000',()=>{
console.log('监听在3000端口')
})
2.判断对象是否为空
-
将json转换成字符串,判断字符串是否是 '{}'
var data = {} console.log(JSON.stringify(data)==="{}") //true
-
for···in循环
var data = {} var isEmpty = function() { for(var key in data){ return false } return true } console.log(isEmpty())//true
-
使用jQuery $.isEmptyObject(data)
var data = {} console.log($.isEmptyObject(data))//true
-
使用对象自带方法Object.getOwnPropertyNames(obj),该方法返回对象的key到数组中,判断返回数组的长度来验证对象是否为空,不兼容老版本IE
var data = {} var arr = Object.getOwnPropertyNames(data); console.log(arr.length===0)//true
-
使用ES6的新方法Object.keys(obj),和4类似
var data = {} var arr = Object.keys(data); console.log(arr.length===0)