本节基本就是最后一节,上节我们本来以为很简单的重构,结果遇到了恶心的第三方组件bug,所以我就用刷新套路来绕过了这个问题,还省去了clear清空函数,顺便给大家讲了下新增的第二万能参数ooid。在最后我们解决了url,host,header的显示问题。本节就剩处理一下 请求方式/请求体类型/请求体了。

    打开我们的home.html,在下图位置新建一个script,记住,是script,并不是一个js函数,如果是js函数的话我们必须要调用才能触发,而我们直接把js代码写在外面,那就会一进入这个页面就会触发了。

javascript if判断去掉大括号 js结束if判断_键值对

我们先来处理请求体类型:

javascript if判断去掉大括号 js结束if判断_字符串_02

代码含义:先判断进来的这个api_method 是不是空的,如果不是,那么它的值一定是post/get/put/delete ,恰好符合我们这个请求方式select下拉框的value,所以直接赋值就可以实现。

javascript if判断去掉大括号 js结束if判断_js函数_03

然后继续:

(代码较多,大家复制即可)

<script>    // 自动设置请求类型    if( "{{ log.api_method }}" != ''){        document.getElementById('ts_method').value = "{{ log.api_method }}";    }    //请求体类型 //请求体    if("{{ log.body_method }}" != ''){        console.log("{{ log.body_method }}");        console.log("{{ log.api_body }}");        var body_method = '#'+"{{ log.body_method }}";        $("li a[href="+body_method+"]").click();        if("{{ log.body_method }}" == 'Text'){            document.getElementById('raw_Text').value = "{{ log.api_body }}";        }        if("{{ log.body_method }}" == 'JavaScript'){            document.getElementById('raw_JavaScript').value = "{{ log.api_body }}";        }        if("{{ log.body_method }}" == 'Json'){            document.getElementById('raw_Json').value = "{{ log.api_body }}";        }        if("{{ log.body_method }}" == 'Html'){            document.getElementById('raw_Html').value = "{{ log.api_body }}";        }        if("{{ log.body_method }}" == 'Xml'){            document.getElementById('raw_Xml').value = "{{ log.api_body }}";        }        if("{{ log.body_method }}" == 'form-data'){            var tbody = document.getElementById('mytbody'); // 定位表格中的tbody部分            body = eval("{{ log.api_body }}"); //把这个像列表的字符串请求体变成真正的列表            for(var i=0;i// 遍历这个请求体列表                key = body[i][0]; //拿出每一个键值对的key                value = body[i][1];//拿出每一个键值对的value                var childs_tr = tbody.children ;//获取到这个表格下面所有的tr组成的大列表                // 每个tr下的children得到的是 td列表,只有俩个。                childs_tr[i].children[0].innerText = key; //第一个td放key                childs_tr[i].children[1].innerText = value;//第二个td放value                //判断是否是最后一次遍历,来决定是否点击新增参数按钮                if(i-1){                    document.getElementById('add').click()                }            }        }        if("{{ log.body_method }}" == 'x-www-form-urlencoded'){            var tbody = document.getElementById('mytbody2'); // 定位表格中的tbody部分            body = eval("{{ log.api_body }}"); //把这个像列表的字符串请求体变成真正的列表            for(var i=0;i// 遍历这个请求体列表                key = body[i][0]; //拿出每一个键值对的key                value = body[i][1];//拿出每一个键值对的value                var childs_tr = tbody.children ;//获取到这个表格下面所有的tr组成的大列表                // 每个tr下的children得到的是 td列表,只有俩个。                childs_tr[i].children[0].innerText = key; //第一个td放key                childs_tr[i].children[1].innerText = value;//第二个td放value                //判断是否是最后一次遍历,来决定是否点击新增参数按钮                if(i-1){                    document.getElementById('add2').click()                }            }        }    }script>

好了我们现在可以刷新页面测试了

javascript if判断去掉大括号 js结束if判断_字符串_04

经过测试,发现除了form-data/x-www...之外的 记录都可以正常刷新并显示出来。

但是form-data这种类型却报错了。

javascript if判断去掉大括号 js结束if判断_js函数_05

看到原因,是我们的二维数组当中的 引号居然传过来就变成了" 这就是被转码了成为特殊字串了。

    导致我们js的eval 无法解析报错。

在后台我们打印发现 并没有问题。

javascript if判断去掉大括号 js结束if判断_js函数_06

那么前端要怎么处理呢?其实有很多办法。

比如正则替换:把所有"都换成双引号。

javascript if判断去掉大括号 js结束if判断_字符串_07

g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

m 执行多行匹配。

好了再试试,发现可以正常了。

javascript if判断去掉大括号 js结束if判断_字符串_08

好了本节基本结束。欢迎持续关注。作者会经常无意埋下一些坑,然后再讲解解决办法的时候引入新的小技巧。请别见怪!作者就是踩了无数个坑,然后埋上土爬出来 才走到今天的。希望大家理解。

    首页明天才是最后一节课,会解决几个小bug,异常处理,还有稍微美化一下。(什么?开头不是说了本节就是最后一节了?不不不,仔细看我说的是基本是最后一节

)