使用SQL数据库中的函数存储Javascript对象

时间:2012-05-22 04:15:14

标签: javascript jquery sql json

我正在开发一个javascript菜单(使用jQuery)。

作为一个例子,下面是我将传递给我的自定义函数的items对象的结构,然后创建菜单。

var items = {
    0: {
        name: 'file',
        submenu: {
            0: {
                name: 'open',
                hasSubitems: true,
                subitems: {
                    0: {
                        name: 'file',
                        hasSubitems: false,
                        callback: function() { alert('you opened a file!'); }
                    },
                    1: {
                        name: 'project'
                        hasSubitems: false,
                        callback: function() { alert('you opened a project!'); }
                    }
                }
            },
            1: {
                name: 'exit',
                hasSubitems: false,
                callback: function() { alert('you logged out!'); }
            }
        }
    },
    1: {
        name: 'edit',
        submenu: {
           ...
        }
    }
}

我希望能够将上述内容存储到数据库中,包括它们的预期回调。我打算创建一个动态构建菜单的界面。

我意识到我可以创建一个JSON字符串并以这种方式存储它,但那么回调函数呢?我被建议不要多次使用eval,所以人们可以通过其他方式将这些信息安全地存储在数据库中,以便以后调用它?

1 个答案:

答案 0 :(得分:1)

JSON是语言中立的(尽管名称),因此它只支持原始值。回调函数是特定于语言的(在本例中为javascript),因此它们不能包含在需要解释为纯JSON的任何内容中。

我建议您将回调代码从这里拉出来,而是包含区分每个参数所需的必要参数。然后,通过JS模板引擎(如Handlebars.js)运行此JSON对象,其中包含辅助函数而不是回调函数。这些可以使用您用来替换(现在有效的)JSON对象中的回调函数的参数来调用。