如何在Lapis中给前端JS传送JSON数据对象

在Lua编写WEB程序的过程中, 有一种应用场景,是从KVDB,或是DB中取出JSON数据,或是直接定义JSON数据传给前端,用于显示展示,或是其它之用。

为了减化说明,我们直接用一个不是从DB取得,而是自定义一个JSON数据, 返回给前端的模板。

Lapis lua代码:

app:get("/return_json", function(self)
        --自定义一个最简单的JSON结构
        tmp_json= {test="abc"}
        --对JSON进行编码
        self.tmp_json = json.encode(tmp_json)
        --渲染模板
        return { render = "json_template" }
end)

Javascript代码:

<script type="text/javascript">

    //这个函数是对文本中含有的特殊符号进行转换处理
    function htmlspecialchars_decode(text) {
        var replacements = Array("&", "<", ">", '"', "'");
        var chars = Array("&", "<", ">", """, "'");
        for (var i = 0; i < chars.length; i++) {
            var re = new RegExp(chars[i], "gi");
            if (re.test(text)) {
                text = text.replace(re, replacements[i]);
            }
        }
        return text;
    }

    // 从etlua模板中,取出lapis传递的值。
    var tmp_json = "<%= tmp_json %>"
    // 转换特殊符号
    var html_tmp_json = htmlspecialchars_decode(tmp_json)

    //  这是将一个普通的字符串,转换成Javascript的JSON对象
    var js_json = eval(html_tmp_json);
</script>

整个JSON从Lua到JS对象过程是:

lua table-> lua json-> js string->js object

中间特殊符号的处理,只是改变了内容,而没改变数据型态。

这个例子是返回JSON数据,同时我们也可以传JSON数据给Lapis, 之后我们可能会简单介绍一下Lapis如何解释JSON参数。

糖果

糖果

糖果
LUA教程

如果不小心安装错 SQL Server 为 Evaluation 的版本,要小心当超过 180 天之后,系统就会无法正常使用了 这几天遇到一个蛮特别的案例,原本收到的问题是 “维护计划” 忽然无法使用,即便是里面没有任何的Task,都无法顺利地执行。但从对方所提供的错误消...… Continue reading

PLUM NIZ静电容键盘怎么样?

Published on September 25, 2020

程序员如何选择合适的机械键盘

Published on September 18, 2020