从json编码的字符串值中删除引号

时间:2014-07-31 15:37:54

标签: javascript php json jquery-select2 jquery-jtable

我正在开发一个将jTable实现到PHP framwework类的项目。 它进展顺利。现在我遇到了一个问题,我希望能够在编辑对话框中进行自定义输入操作。

我们已经在使用select2插件了,现在我想在jTable的编辑对话框中实现它。据我所知,可以将自定义字段添加到编辑对话框中,如下所示:

Name: {
    title: 'Name',
    width: '20%',
    input: function (data) {
        if (data.record) {
            return '<input type="text" name="Name" style="width:200px" value="' + data.record.Name + '" />';
        } else {
            return '<input type="text" name="Name" style="width:200px" value="enter your name here" />';
        }
    }
}

请注意,上面的代码是用JavaScript编写的。 基本上我所做的就是我在php数组中构建这个javascript并通过json_encode将它发送给客户端。

我的问题是,当我这样做时

$column_array['name']['input'] = function (data) {if ....and so on}

我进入了javascript端

input: "function (data) {... so on"

请注意双引号,它是一个字符串而不再是一个函数。

我需要的是在输入后删除这2个双引号。 (到目前为止,这是我的想法)

或者如果有人对jTable有一些经验]并且知道更好的方法来实现自定义字段,如select2,selected,jQuery multiselect,elfinder等等。

如果需要,我明天可以提供一些代码,因为我今天不再工作了。

1 个答案:

答案 0 :(得分:0)

基于这个概念:

// Create a function that takes two arguments and returns the sum of those arguments
var fun = new Function("a", "b", "return a + b");
// Call the function
fun(2, 6);
Output: 8

你可以将你的JSON改为

Name: {
    title: 'Name',
    width: '20%',
    input: { name: "input",
             param: "data",
             body: "if (data.record) {
                   return '<input type=\".... "
            }
    ....

然后你可以定义一个函数并执行它

var d = new Function(Name.input.name, Name.input.param, Name.input.body);
d(otherdata);

这将省略可怕的eval(...)内容。警告:它仍然不是给定对象的方法。