jQuery:print_r()显示等效项?[复制]

jQuery: print_r() display equivalent? [duplicate]

提问人:Eli 提问时间:1/19/2009 最后编辑:CommunityEli 更新时间:8/30/2013 访问量:147574

问:

这个问题在这里已经有答案了:
11年前关闭。

可能的重复:
JavaScript 数据格式/漂亮的打印机

我有点厌倦了在 FireBug 中查看未格式化的 json blob。

有谁知道 jQuery 的 PHP print_r() 等价物?

会递归地从对象或数组生成显示字符串的东西,我可以在页面上显示以进行快速调试?

谢谢!

PHP jQuery 调试

评论


答:

70赞 Paolo Bergantino 1/19/2009 #1

console.log 是我在调试时最常使用的。

不过,我能够找到这个jQuery扩展

评论

6赞 Eli 1/19/2009
这是完美的。我一直在使用console.log,但没有意识到我可以向它传递一个对象。杜尔...
5赞 Randy L 11/23/2010
确实是杜尔。直到现在我才真正弄清楚这一点,因为我总是在控制台.log()的开头附加一个字符串,所以每次我得到字符串表示[对象]时。我尝试了console.log(myObj),现在好多了。
2赞 Aaron McAdam 1/20/2011
此外,console.dir 最适合:)对象
8赞 Shawn 12/12/2012
@the0ther控制台.log可以接受多个参数,因此,如果要在开头添加字符串,请使用(注意逗号)。这样你就可以得到你的字符串,对象也会正确显示。console.log(string, object);
2赞 Jason 5/26/2013
jQuery 扩展的链接已损坏。
44赞 Christian C. Salvadó 1/19/2009 #2

您可以使用非常容易的反射来列出所有属性、方法和值。

对于基于 Gecko 的浏览器,您可以使用 .toSource() 方法:

var data = new Object();
data["firstname"] = "John";
data["lastname"] = "Smith";
data["age"] = 21;

alert(data.toSource()); //Will return "({firstname:"John", lastname:"Smith", age:21})"

但是,既然您使用 Firebug,为什么不直接使用 console.log?

9赞 Bill Zeller 1/19/2009 #3

你也可以做

console.log("a = %o, b = %o", a, b);

其中 A 和 B 是对象。

5赞 jerclarke 4/19/2010 #4

热门评论有一个指向 Firebug 的 console.log 文档的断开链接,所以这里是关于控制台的 wiki 文章的链接。我开始使用它,并且对它作为 PHP 的 print_r() 的替代品感到非常满意。

另外值得注意的是,Firebug 允许您访问返回的 JSON 对象,即使您无需手动记录它们:

  • 在控制台中,您可以看到 AJAX 响应。
  • 单击三角形以展开响应并查看详细信息。
  • 单击详细信息中的“JSON”选项卡。
  • 您将看到使用扩展三角形组织的响应数据。

此方法需要多次单击才能获取数据,但不需要在实际的 javascript 中添加任何内容,也不会将您在 Firebug 中的注意力从控制台中转移出去(使用 console.log 会创建一个指向 firebug 的 DOM 部分的链接,迫使您单击返回控制台)。

为了我的钱,我宁愿在想要检查时多点击几次,而不是弄乱日志,特别是因为通过不添加任何额外的粗碎来保持控制台整洁。

17赞 Magnus Andersson 11/1/2011 #5

像这样的东西怎么样:

<script src='http://code.jquery.com/jquery-latest.js'></script>

function print_r(o){
return JSON.stringify(o,null,'\t').replace(/\n/g,'<br>').replace(/\t/g,'&nbsp;&nbsp;&nbsp;'); }

评论

0赞 Gogol 5/9/2014
如果有人讨厌控制台,实际上是一个很好的回复.log :)
6赞 Tomas 1/17/2012 #6

我制作了一个jQuery插件,相当于

<pre>
<?php echo print_r($data) ?>
</pre>

您可以在 https://github.com/tomasvanrijsse/jQuery.dump 下载它

评论

0赞 ShivarajRH 8/30/2013
我修改了你的代码:你的代码输出需要附加到一个div。但是有了这个函数,我就可以在控制台上同时显示字符串和对象。function print(variable) { if(typeof variable == 'object') { $.each(variable, function(key, element) { console.log('' + key + ' => ' + element+“”); } else { console.log('' + variable +“”); } }
0赞 Tomas 8/30/2013
你能在 github.com/tomasvanrijsse/jQuery.dump 上发送拉取请求吗
0赞 ShivarajRH 8/31/2013
我发送了拉取请求。:-)
-1赞 niofox 3/6/2012 #7

看看这个:http://phpjs.org/functions/index 并找到print_r或使用 console.log() 和 firebug。

6赞 Gogol 7/10/2012 #8
$.each(myobject, function(key, element) {
    alert('key: ' + key + '\n' + 'value: ' + element);
});

这为我做了工作。:)

评论

0赞 Dallas Clark 9/21/2012
这不适用于多维对象。
0赞 Gogol 9/22/2012
嗯,这可能是真的,但是为什么不将 console.log 用于复杂的数组/对象呢?
0赞 Gogol 9/22/2012
如果您仍然想这样做(假设您确实需要它进行编码,而不是调试),则可能需要嵌套的 foreach 语句,这在某些时候可能真的很复杂:P
1赞 Dallas Clark 9/24/2012
因为有时您需要在页面上输出结果。我创建了一个函数,该函数输出数组,如果它检测到子值是另一个数组,则调用自身。