2013-09-05 62 views
7

Có cách nào để trả lời JSON xuất phát từ máy chủ không? Tôi đang cố gắng điều sau đây, với sản lượng không mong muốn:AngularJS log JSON

$http({ method: 'GET', url: 'getUser' }) 
     .success(function (data,status) { 
      $scope.user = data; 
      console.log("User="+data);}) 
     .error(function (data,status) { 
      $scope.status = status; 
      if(status==403) 
       $location.path("/"); 
     }); 

Output:

User=[object Object] 

Trả lời

13

Bạn có thể stringify nó trước khi in.

console.log("User = " + JSON.stringify(data)); 
4

Tùy thuộc vào trình duyệt của bạn, chức năng log có thể thực hiện nhiều thông số. Chrome, ví dụ, hỗ trợ này:

console.log("User = ", data); 

Khi bạn làm điều này, data xuất hiện trong một trình duyệt đối tượng mà bạn có thể hiển thị/sụp đổ hệ thống phân cấp. Nó cực kỳ hữu ích. Kể từ khi tôi phát triển trong Chrome, tôi rất thích phương pháp này (hơn JSON.stringify) vì nó ít đánh máy hơn và trải nghiệm gỡ lỗi tốt hơn.

Nếu bạn gặp khó khăn khi gỡ lỗi trong trình duyệt không hỗ trợ cú pháp này, thì JSON.stringify có lẽ là lựa chọn tốt nhất của bạn.

+0

Mặc dù JSON.stringify (val) sẽ không ném bất kỳ lỗi cho bất kỳ kiểu dữ liệu, điều này dễ dàng hơn nhiều so với câu trả lời được chấp nhận. – tsuz

0

console.dir(object) là những gì bạn đang tìm kiếm. Nó hiện được hỗ trợ rộng rãi trong tất cả các trình duyệt (IE9 +). Đầu ra có thể được xem here.

7

Bạn cũng có thể sử dụng angular.toJson() nếu bạn không muốn thêm một phụ thuộc mới:

$log.debug(angular.toJson(data, true)); 

Reference

+0

Câu trả lời hay nhất của FAR! –