2009-01-19 25 views
63

thể trùng lặp:
JavaScript data formatting/pretty printerjQuery: print_r() hiển thị tương đương?

Tôi nhận được một chút mệt mỏi nhìn vào blobs json chưa định dạng trong Firebug.

Có ai biết tương đương với print_r() của PHP cho jQuery không?

Điều gì đó đệ quy sẽ tạo chuỗi hiển thị từ một đối tượng hoặc mảng, mà tôi có thể hiển thị trên trang để gỡ lỗi nhanh?

Cảm ơn!

Trả lời

68

console.log là những gì tôi thường sử dụng nhất khi gỡ lỗi.

Tôi có thể tìm thấy số này jQuery extension.

+6

Điều này thật hoàn hảo. Tôi đã sử dụng console.log, nhưng đã không nhận ra tôi có thể vượt qua nó một đối tượng. Durr ... – Eli

+5

Durr thực sự. Tôi đã không thực sự con số này ra cho đến bây giờ, bởi vì tôi luôn luôn tack trên một chuỗi ở đầu của console.log của tôi() và vì vậy mọi lúc tôi chỉ nhận được đại diện chuỗi [Object object]. Tôi đã thử console.log (myObj) và nó tốt hơn nhiều. – the0ther

+2

Ngoài ra, console.dir là tốt nhất cho các đối tượng :) –

44

Bạn có thể sử dụng rất dễ dàng reflection để liệt kê tất cả các thuộc tính, phương pháp và giá trị.

Đối với Gecko các trình duyệt dựa trên bạn có thể sử dụng) phương pháp .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})" 

Nhưng kể từ khi bạn sử dụng Firebug, tại sao không chỉ cần sử dụng console.log?

+0

mmm dễ nhất nhờ: D – Gogol

9

Bạn cũng có thể làm

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

nơi a và b là các đối tượng.

5

Nhận xét hàng đầu có liên kết bị hỏng đến tài liệu console.log dành cho Firebug, vì vậy, đây là a link to the wiki article about Console. Tôi bắt đầu sử dụng nó và khá hài lòng với nó như là một thay thế cho print_r của PHP().

Cũng chú ý là Firebug giúp bạn truy cập trở JSON đối tượng thậm chí không có bạn đăng nhập thủ công chúng:

  • Trong giao diện điều khiển bạn sẽ nhìn thấy url của phản ứng AJAX.
  • Nhấp vào hình tam giác để mở rộng phản hồi và xem chi tiết.
  • Nhấp vào tab JSON trong chi tiết.
  • Bạn sẽ thấy dữ liệu phản hồi được tổ chức với hình tam giác mở rộng.

Phương pháp này cần thêm vài nhấp chuột để nhận dữ liệu nhưng không yêu cầu bất kỳ bổ sung nào trong javascript thực tế của bạn và không thay đổi tiêu điểm trong Firebug ngoài bảng điều khiển (bằng console.log tạo liên kết vào phần DOM của firebug, buộc bạn phải bấm lại để bàn điều khiển sau).

Đối với số tiền của tôi, tôi muốn bấm vào một vài lần nữa khi tôi muốn kiểm tra thay vì lộn xộn xung quanh với nhật ký, đặc biệt là vì giữ bàn điều khiển gọn gàng bằng cách không thêm bất kỳ cruft bổ sung.

15

Làm thế nào về một cái gì đó như:

<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

một câu trả lời khá tốt thực sự nếu ai đó ghét console.log :) – Gogol

6

Tôi đã thực hiện một plugin jQuery cho tương đương với

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

Bạn có thể tải nó tại https://github.com/tomasvanrijsse/jQuery.dump

+0

Tôi đã sửa đổi mã của bạn: Đầu ra mã của bạn cần phải đính kèm vào một div. Nhưng với chức năng này tôi có thể hiển thị trên bàn điều khiển cả chuỗi và đối tượng. chức năng in (biến) { nếu (typeof variable == 'object') { $ .each (biến, hàm (khóa, phần tử) { console.log ('' + key + '=>' + element + ""); }); } else { console.log ('' + variable + ""); } } – ShivarajRH

+0

Bạn có thể gửi yêu cầu kéo trên https://github.com/tomasvanrijsse/jQuery.dump – Tomas

+0

Tôi đã gửi yêu cầu kéo không. :-) – ShivarajRH

6
$.each(myobject, function(key, element) { 
    alert('key: ' + key + '\n' + 'value: ' + element); 
}); 

Điều này làm việc cho tôi. :)

+0

Điều này sẽ không hoạt động với các đối tượng đa chiều. –

+0

Hmm có thể đúng, nhưng tại sao bạn không sử dụng console.log cho mảng/đối tượng phức tạp? – Gogol

+0

Nếu bạn vẫn muốn làm điều này (giả sử rằng bạn thực sự cần điều này để mã hóa, thay vì gỡ lỗi), bạn có thể cần các câu lệnh foreach lồng nhau, có thể thực sự phức tạp tại các thời điểm nhất định: P – Gogol

Các vấn đề liên quan