从json数组中的控制台日志

时间:2013-08-23 06:23:22

标签: javascript json console

只是玩一个JSON数组,想知道是否可以直接在JSON数组中控制日志。即:

{ "id": "1", "type": "text", "description": "hello <script>console.log('console this text')</script> I am testing },

在上面的示例中,它将<script>console.log('console this text')</script>显示为文本而不是实际的html。有什么方法可以让它通过将它放在数组中来在控制台中生成消息吗?

2 个答案:

答案 0 :(得分:1)

这真的取决于你的意思......

在直接的JavaScript中,您可以以这种方式使用对象表示法,但您确实需要将其包装在函数调用中。

除此之外,你正在非常糟糕地混合使用javascript和松散文本......你真的需要让浏览器知道你正在使用哪一个以及何时使用。

例如,那些脚本标签?如果您已经在使用JavaScript,那么为什么要告诉浏览器“这里有一些脚本”?

稍作清理:

var myObject = { 
    id: "1", 
    type: "text", 
    description: function(){console.log('console this text')}
}

myObject.description();

这是有效的JavaScript,如果以这种方式输入页面,它将在浏览器中完美运行。

但是,我怀疑这不是你的意思......你打算做的是从AJAX调用中获取它,并让它在浏览器中运行任意脚本。

那不行。

以这种方式使用的JSON被设计为数据格式,不允许传递方法,只传递属性。

但是,有一些用途可以诱导此类行为:LOOK HERE

简而言之,任何文本(无论是否为JSON)都可以在客户端系统上进行评估,并且可能会运行恶意代码。这非常类似于PHP中的安全问题,其中糟糕的编程习惯允许使用eval和其他漏洞在服务器上运行客户端馈送代码。

这就是为什么这么多网站在擦除任意用户提供的任何数据时都是神经质的...例如,用户评论中的html标签和javascript代码。

答案 1 :(得分:0)

您可以尝试使用自我调用功能。

var obj = {
'a' : '1',
'b' : '2',
'c' : (function(){console.log('3')})()
}