1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
volcanos/lib/misc.js
2019-12-12 17:45:22 +08:00

66 lines
2.3 KiB
JavaScript

Volcanos("misc", {help: "工具模块",
POST: shy("请求后端", {order: 0}, function(can, msg, url, form, cb) {
var args = can.core.Items(form, function(value, index, key) {
return key+"="+encodeURIComponent(value)
})
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) {return}
if (xhr.status != 200) {return}
try {
var res = JSON.parse(xhr.responseText||'[{"result":[]}]')
res.length > 0 && res[0] && (res = res[0])
if (res.download_file) {
window.open(res.download_file.join(""))
} else if (res.page_redirect) {
location.href = res.page_redirect.join("")
} else if (res.page_refresh) {
location.reload()
}
} catch (e) {
var res = {"result": [xhr.responseText]}
}
typeof cb == "function" && cb(msg.Copy(res))
}
xhr.open("POST", url)
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
xhr.setRequestHeader("Accept", "application/json")
xhr.send(args.join("&"))
++arguments.callee.meta.order
}),
Run: shy("请求后端", {order: 0}, function(event, can, dataset, cmd, cb) {
var msg = can.Event(event)
var option = {"cmds": cmd}
msg.option && msg.option.forEach(function(item) {
msg[item] && (option[item] = msg[item])
})
for (var k in dataset) {
option[k] = dataset[k].toLowerCase().split(",")
}
var what = ++arguments.callee.meta.order
msg._hand = true
msg.option = []
for (var k in option) {
msg.option.push(k)
msg[k] = option[k]
}
// msg.detail = ["run", what].concat(option.group).concat(option.names).concat(option.cmds)
// kit.Log(msg.detail.concat([msg]))
// kit.History("run", -1, option)
this.POST(can, msg, can.Conf("context"), option, function(msg) {
// kit.Log("run", what, "result", msg.result? msg.result[0]: "", msg)
typeof cb == "function" && cb(msg)
}), delete(event.msg)
}),
})