2013-08-05 40 views
18

Tôi có một cuộc gọi ajax rất cơ bản để cảnh báo các dữ liệu đã được báo cáo từ máy chủjquery ajax hiển thị dữ liệu [đối tượng Object]

$.ajax({ 
     type: "POST", 
     url: "/someform/act", //edit utl to url 
     data: { changed: JSON.stringify(plainData) }, //edit to include 
     success: function(data) { 
      alert(data);    //data not $data 
     }, 
     error: function() { 
      //error condition code 
     } 
}); 

Theo docs trên trang web jquery liên quan đến lĩnh vực dữ liệu trên callback thành công , nó nói rằng dữ liệu trả về là dữ liệu từ máy chủ. Tuy nhiên vì một lý do lạ lùng khi tôi cảnh báo $data, tôi nhận được [object Object]

Tôi đã chờ đợi để xem một cái gì đó như thế này, vì đó là những gì các máy chủ sẽ gửi lại

<status>0</status> 

EDIT:

dữ liệu là cũng được chuyển đi dưới dạng POST

+0

Bạn sẽ nhận được gì nếu bạn sử dụng 'alert (data);'? –

+0

Máy chủ gửi lại XML, jQuery sau đó phân tích cú pháp cho biết xml. Những gì bạn có là một tài liệu xml. Hãy thử 'console.log (dữ liệu)' –

+0

Tôi nhận được 'thành công' khi tôi cảnh báo dữ liệu – tawheed

Trả lời

19

alert() in chỉ chuỗi đại diện của các đối số - do đó nếu bạn vượt qua một đối tượng, bạn sẽ nhận được [object Object].

Để kiểm tra dữ liệu, hãy sử dụng console.log(data) tốt hơn.

28

Bạn cần sử dụng JSON.stringify(data) trong các alert để nhận mọi thứ có thể đọc được.

Ngoài ra, $data là tên biến hoàn toàn khác so với data.

+0

Không thực sự, nó phụ thuộc vào 'dữ liệu' là gì. Có lẽ nó đã là một chuỗi. –

+0

Tôi nhận được 'thành công' trở lại làm phản hồi. Tôi đã hy vọng để có được xml trở lại từ máy chủ – tawheed

4

Nếu máy chủ của bạn gửi JSON, bạn cần phải đặt dataType: 'json' vào cuộc gọi ajax của mình. Hãy nhận biết có một số sai lầm trong cuộc gọi ajax của bạn.

 $.ajax({ 
       type: "POST", 
       url: "/someform/act", // NOT 'UTL', 
       data: { 
        key: value, 
        key2: value2 
       }, 
       // or data: plaindata, // If 'plaindata' is an object. 
       dataType: 'json', 
       success: function(data) { 
        console.log(data); // As moonwave99 said 
       }, 
       error: function() { 
        //error condition code 
       } 
     }); 

EDIT

Khi gửi dữ liệu, bạn nên gửi một đối tượng. jQuery sẽ xử lý các mảng để sned nó vào máy chủ. Vì vậy, nếu dữ liệu đơn giản là một đối tượng, nó phải là như thế này

   data: plainData, 
+0

nhờ 'utl' là một typo rõ ràng :-) – tawheed

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