JavaScript 奇技淫巧

文章目录
  1. 1. fetch API
  2. 2. 创建表单
  3. 3. 使用 JSON5 解析非标准 JSON

本帖记录一些用过都说好的 JavaScript 代码片段。

fetch API

1
2
3
4
5
6
7
8
const response = await fetch(url, {
method: 'POST',
mode: 'cors',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams(data)
})

创建表单

这个用于在新标签页打开一个 POST 引导的网页。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
data = {/* POST body, as an key-value object */}
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", url);
form.setAttribute("target", "_blank")
for(var key in data) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", data[key]);
form.appendChild(hiddenField);
}
document.body.appendChild(form);
form.submit();

使用 JSON5 解析非标准 JSON

JavaScript 自带的 JSON.parse() 对 JSON 的要求非常严格。我们常常会碰到一些非标准的 JSON (relaxed JSON),要想正确做反序列化,可以直接用 JSON5 库。

1
const obj = JSON5.parse(relaxedjsonstr)