h5兼容ie8

2019-05-06  本文已影响0人  __笑我一世沉沦丶

1、使用json时需要格式化
2、ajax请求数据,传递json时,data中的数据需要使用json字符串

$.ajax({
   url:ip+'/sys/login',
   data:'{"username":"cs","password":"123456"}',
   type:'post',
   async:false,
   contentType : "application/json",
   jsonp: "callback",
   success:function(res){
  }
})

3、页面跳转

window.location.href='...'

接收参数。‘planId’和‘storeId’即为window.location.href传递的参数字符串

      function getQueryString(name) {
            var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
            var r = window.location.search.substr(1).match(reg);
            if (r != null) {
                return unescape(r[2]);
                //return decodeURI(r[2]); //解决中文乱码问题
            }
        }
        var planId = getQueryString('planId')
        var storeId = getQueryString('storeId')

4、获取路由query

function getQueryString(name) {
        var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
        var r = window.location.search.substr(1).match(reg);
        if (r != null) {
            return unescape(r[2]);
            //return decodeURI(r[2]); //解决中文乱码问题
        }
    }

5、兼容json.stringfy()方法
在页面中引入以下代码,即可兼容该方法

if (!window.JSON) {
    window.JSON = {
        parse: function(jsonStr) {
            return eval('(' + jsonStr + ')');
        },
        stringify: function(jsonObj) {
            var result = '',
                curVal;
            if (jsonObj === null) {
                return String(jsonObj);
            }
            switch (typeof jsonObj) {
                case 'number':
                case 'boolean':
                    return String(jsonObj);
                case 'string':
                    return '"' + jsonObj + '"';
                case 'undefined':
                case 'function':
                    return undefined;
            }

            switch (Object.prototype.toString.call(jsonObj)) {
                case '[object Array]':
                    result += '[';
                    for (var i = 0, len = jsonObj.length; i < len; i++) {
                        curVal = JSON.stringify(jsonObj[i]);
                        result += (curVal === undefined ? null : curVal) + ",";
                    }
                    if (result !== '[') {
                        result = result.slice(0, -1);
                    }
                    result += ']';
                    return result;
                case '[object Date]':
                    return '"' + (jsonObj.toJSON ? jsonObj.toJSON() : jsonObj.toString()) + '"';
                case '[object RegExp]':
                    return "{}";
                case '[object Object]':
                    result += '{';
                    for (i in jsonObj) {
                        if (jsonObj.hasOwnProperty(i)) {
                            curVal = JSON.stringify(jsonObj[i]);
                            if (curVal !== undefined) {
                                result += '"' + i + '":' +curVal + ',';
                            }
                        }
                    }
                    if (result !== '{') {
                        result = result.slice(0, -1);
                    }
                    result += '}';
                    return result;

                case '[object String]':
                    return '"' + jsonObj.toString() + '"';
                case '[object Number]':
                case '[object Boolean]':
                    return jsonObj.toString();
            }
        }
    };
}

6、underscore模板
<% %> => 写函数表达式
<%= %> => 写函数值
<%- %> => 在元素对象上写一些参数

<div id='app'></div>

<script type='text/html' id='tpl1'>
    <table class="table table-striped table-bordered">
            <% for(var n=0 ; n<data.taskList.length; n++){ %>
            <tr>
                <% var item2 = data.taskList[n] %>
                <td><%= n+1 %></td>
                <td><%= item2.taskType %></td>
                <td><%= item2.createTime %></td>
                <td><%= item2.taskState %></td>
                <td><%= item2.updateTime %></td>
                <td><%= item2.abnormalType %></td>
                <td>
                    <button class="hbtn" type="button" onclick="check2(<%- n %>)">查看</button>
                </td>
            </tr>
            <% } %>
        </table>
</script>
<script>
  var data = {}
  var factory = $('#app');
  var tpl1 = $('#tpl1').html();
  var render = _.template(tpl1);
</script>

递归渲染,实现树状图效果:

<script type='text/html' id='tpl1'>
            <ul class="tree">
                <% function fnn1(data){ %>
                <% if(data.length){ %>
                <ul>
                    <% if(data.isDown){ %>
                    <% for(var i=0 ; i<data.length; i++){ %>
                    <% var item = data %>
                    <% if(item[i].list){ %>
                    <li>
                        <img onclick="fr1(<%- item[i].orgId %>)" class="down" src="<%- item[i].imgDown?'image/right.png':'image/down.png' %>" alt="">
                        <a href="#" onclick="fr2(<%- item[i].orgId %>)"><%= item[i].name %></a>
                    </li>
                    <% fnn1(item[i].list) %>
                    <%  %>
                    <% } %>
                    <% } %>
                    <% } %>
                </ul>
                <% } %>
                <% } %>
                <% fnn1(data.treeData) %>
            </ul>
</script>
<script>
     var data = {
        "tableTitle1": [
            "门店编号",
            "门店名称",
            "任务数",
            "待处理任务",
            "操作"
        ],
        "tabledata1": [ ],
        "stat": { },
        "treeData": [ ],
        "tabledata2":[ ]
    }
    var factory = $('#app');
    var tpl1 = $('#tpl1').html();
    var render = _.template(tpl1);
    jQuery.support.cors = true;


      function fr1(id){
        function ff(data) {
            if (data.length) {
                for (var i = 0; i < data.length; i++) {
                    var item = data
                    if (item[i].orgId===id) {

                        item[i].list.isDown = !item[i].list.isDown;
                        item[i].imgDown = !item[i].imgDown
                        var html = render(data);
                        factory.html(html);
                    }else{
                        ff(item[i].list)
                    }
                }
            }
            return data
        }
        ff(data.treeData)
    }
    function fr2(id) {
        $.ajax({
            url:ip+'/abnormal/checkplan/all/'+id,
            type:'get',
            jsonp: "callback",
            headers:{
                "token":token
            },
            success:function (res) {
                data.tabledata2 = res.nPList;
                var html = render(data);
                factory.html(html);
            },
            error:function (err) {

            }
        })
    }

    $.ajax({
        url:ip+'/sys/login',
        data:'{"username":"cs","password":"123456"}',
        type:'post',
        async:false,
        contentType : "application/json",
        jsonp: "callback",
        success:function (res) {
            if(res.code===0){
                token=res.token;
                $.ajax({
                    url:ip+'/abnormal/checkplan/today',
                    type:'get',
                    jsonp: "callback",
                    headers:{
                        "token":token
                    },
                    success:function (res) {
                        data.tabledata1 = res.nPList;
                        var html = render(data);
                        factory.html(html);
                    },
                    error:function (err) {

                    }
                })

                $.ajax({
                    url:ip+'/abnormal/checkplan/stat',
                    type:'get',
                    headers:{
                        "token":token
                    },
                    success:function (res) {
                        data.stat = res.taskNum
                        var html = render(data);
                        factory.html(html);
                    }
                })

                $.ajax({
                    url:ip+'/sys/org/all',
                    type:'get',
                    headers:{
                        "token":token
                    },
                    success:function (res) {
                        var arr = res.orgList;
                        // data.treeData = res.orgList;
                        function fnn1(data) {
                            if (data.length) {
                                for (var i = 0; i < data.length; i++) {
                                    var item = data
                                    if (item[i].list.length) {
                                        item[i].imgDown = true
                                        fnn1(item[i].list)
                                    }else{
                                        item[i].imgDown = false
                                    }
                                }
                                data.isDown = false;
                            }
                            return data
                        }
                        var df = fnn1(arr)
                        df.isDown = true
                        data.treeData = df;
                        var html = render(data);
                        factory.html(html);
                    }
                })
                $.ajax({
                    url:ip+'/abnormal/checkplan/all/0',
                    type:'get',
                    jsonp: "callback",
                    headers:{
                        "token":token
                    },
                    success:function (res) {
                        data.tabledata2 = res.nPList;
                        var html = render(data);
                        factory.html(html);
                    },
                    error:function (err) {

                    }
                })
            }
        },
        error:function (err) {

        }
    })
</script>
上一篇下一篇

猜你喜欢

热点阅读