【问题标题】:How to interpret javascript within a json file如何在 json 文件中解释 javascript
【发布时间】:2016-08-21 11:39:56
【问题描述】:

我正在使用表单构建器Alpaca,我想解释一个 json 数据源文件中的 javascript 函数,以选择某个文件:

/data/options.json:

    "nature":{
        "type": "select",
        "dataSource": "function(e) {...}"
    },

这个文件在这里加载:

/test.html:

            $("#div").alpaca({
                "optionsSource": "/data/options.json",
                 etc...

这可能吗?

谢谢。

【问题讨论】:

  • 仅当您将函数存储为字符串时
  • 我该怎么做?谢谢。
  • var b = function a(){ alert('boom') }.toString(),在这种情况下你会得到函数a的字符串表示
  • 嗯,它是一个 json 文件,所以我不能使用 "var b"....

标签: javascript json


【解决方案1】:

您可以使用eval

object = {"nature":{
    "type": "select",
    "dataSource": "function(e) {alert('ok')}"
    }
}

var x = eval("("+object.nature.dataSource+")");
x()

Demo

【讨论】:

  • JSON.parse解析它。你在读文件吗?使用 http 获取它?
  • 你所说的没有任何意义,提供细节而不是简单地说它不起作用
  • 你能读取 json 文件吗?用 nodejs 什么的?
  • 是的,我可以读取 json 文件,但什么也没发生,即函数 ins 没有被解释。羊驼掌管一切..
【解决方案2】:

您可以先进行函数调用,然后使用 data.nature.push() 将结果添加到 JSON;

看到这个答案:Add data to JSON in JS

script type="text/javascript">
var JSON = {"nature":{
    "type": "select"
}};
JSON.dataSource.push(function());

$("#form1").alpaca(JSON);
</script>

【讨论】:

  • 嗯,问题是 Alpaca 只是在加载 json 文件,但没有解释 javascript 函数;所以我不能真正制作 data.nature.push()
  • 在调用你的羊驼之前修改 JSON
  • 好的。但我不能这样做,因为我想使用的函数的参数只有在加载 Alpaca 后才可用
  • 好吧,我不认为你有好的方法。你需要某种控制器来修改你的羊驼。
【解决方案3】:

作为 Alpace 数据源文档,http://www.alpacajs.org/docs/api/datasources.html 您可以在数据源参数中使用自定义函数:

$("#field5").alpaca({
"schema": {
    "type": "string",
    "title": "Pick an Action Hero"
},
"options": {
    "type": "select",
    "dataSource": function(callback) {
        callback([{
            "value": "rambo",
            "text": "John Rambo"
        }, {
            "value": "norris",
            "text": "Chuck Norris"
        }, {
            "value": "arnold",
            "text": "Arnold Schwarzenegger"
        }]);
    }
}

});

【讨论】:

  • 谢谢。我已经这样做了,但问题是在这个例子中,一切都在同一个文件中,但在我的例子中,数据源在一个 json 文件中..
  • 这个json文件是怎么加载的?在您的问题中添加更多信息。
  • 我在问题中添加了一些细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-16
  • 2016-02-02
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 2016-01-05
相关资源
最近更新 更多