查漏补缺

1.jQuery

  1. 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.判断对象是否为空

  1. 将json转换成字符串,判断字符串是否是 '{}'

     var data = {}
     console.log(JSON.stringify(data)==="{}") //true
    
  2. for···in循环

     var data = {}
     var isEmpty = function() {
         for(var key in data){
             return false
         }
         return true
     }
     console.log(isEmpty())//true
    
  3. 使用jQuery $.isEmptyObject(data)

     var data = {}
     console.log($.isEmptyObject(data))//true
    
  4. 使用对象自带方法Object.getOwnPropertyNames(obj),该方法返回对象的key到数组中,判断返回数组的长度来验证对象是否为空,不兼容老版本IE

     var data = {}
     var arr = Object.getOwnPropertyNames(data);
     console.log(arr.length===0)//true
    
  5. 使用ES6的新方法Object.keys(obj),和4类似

     var data = {}
     var arr = Object.keys(data);
     console.log(arr.length===0)
    

3.弹出框组件 artdialog

链接地址