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

Posted

技术标签:

【中文标题】jQuery:print_r() 显示等效? [复制]【英文标题】:jQuery: print_r() display equivalent? [duplicate] 【发布时间】:2010-10-02 04:21:42 【问题描述】:

可能重复:javascript data formatting/pretty printer

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

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

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

谢谢!

【问题讨论】:

【参考方案1】:

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

不过我还是找到了这个jQuery extension

【讨论】:

这是完美的。我一直在使用 console.log,但没有意识到我可以将对象传递给它。杜尔... 确实是杜尔。直到现在我才真正弄清楚这一点,因为我总是在我的 console.log() 开头添加一个字符串,所以每次我只得到字符串表示 [Object object]。我尝试了 console.log(myObj),现在好多了。 另外,console.dir 最适合对象 :) @the0ther console.log 可以接受多个参数,所以如果你想在开头添加一个字符串,请使用console.log(string, object);(注意逗号)。这样你得到你的字符串并且对象也正确显示。 jQuery 扩展的链接已损坏。【参考方案2】:

您可以非常轻松地使用reflection 列出所有属性、方法和值。

对于基于 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 呢?

【讨论】:

【参考方案3】:

怎么样:

<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;'); 

【讨论】:

如果有人讨厌console.log,这是一个很好的回复:)【参考方案4】:

你也可以这样做

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

其中 a 和 b 是对象。

【讨论】:

【参考方案5】:
$.each(myobject, function(key, element) 
    alert('key: ' + key + '\n' + 'value: ' + element);
);

这对我有用。 :)

【讨论】:

这不适用于多维对象。 嗯,这可能是真的,但你为什么不使用 console.log 来处理复杂的数组/对象呢? 如果你仍然想这样做(假设你真的需要它来编码,而不是调试),你可能需要嵌套的 foreach 语句,这在某些时候真的很复杂:P 因为有时候需要在页面上输出结果。我创建了一个函数,它输出数组并在检测到子值是另一个数组时调用自身。【参考方案6】:

我已经制作了一个相当于

的jQuery插件
<pre>
<?php echo print_r($data) ?>
</pre>

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

【讨论】:

我修改了您的代码:您的代码输出需要附加到一个 div。但是有了这个功能,我可以在控制台上同时显示字符串和对象。 function print(variable) if(typeof variable == 'object') $.each(variable, function(key, element) console.log('' + key + ' => ' + element+""); ); else console.log('' + 变量 +""); 你能在github.com/tomasvanrijsse/jQuery.dump上发送拉取请求吗 我发送了拉取请求。 :-)【参考方案7】:

顶部评论中指向 Firebug 的 console.log 文档的链接已损坏,因此这里是 a link to the wiki article about Console。我开始使用它并且对它作为 PHP 的 print_r() 的替代品非常满意。

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

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

此方法需要多点击几次才能获取数据,但不需要在您的实际 javascript 中添加任何内容,并且不会将您在 Firebug 中的焦点转移到控制台之外(使用 console.log 创建到 DOM 的链接部分萤火虫,迫使您点击后返回控制台)。

为了我的钱,当我想检查而不是乱搞日志时,我宁愿多点击几次,尤其是因为通过不添加任何额外的杂物来保持控制台整洁。

【讨论】:

【参考方案8】:

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

【讨论】:

以上是关于jQuery:print_r() 显示等效? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Perl 的等价于 PHP 的 print_r() 是啥?

在 javascript/jquery 中使用 PHP print_r 数组

json 没有价值,但 print_r 有价值 php pdo jquery ajax

PHP 等效于 .NET/Java 的 toString()

复大官网总结

jQuery .load() 等效 AngularJS