IvanZh thông báo với tôi rằng cách tiếp cận này không hiệu quả với anh ta, điều này đã nhắc tôi thực hiện một số nghiên cứu về đối tượng HTML5 FormData
. Khi nó quay ra, tôi đã hoàn toàn sai về điều này (xem câu trả lời sai cũ dưới đây). Tất cả dữ liệu cho FormData
nằm trong mã gốc. Điều đó có nghĩa là trình duyệt xử lý dữ liệu cho các trường biểu mẫu và tệp tải lên bằng ngôn ngữ thực hiện của nó.
Trích dẫn MDN:
Lưu ý: ... đối tượng FormData không đối tượng stringifiable. Nếu bạn muốn xâu chuỗi dữ liệu đã gửi, hãy sử dụng ví dụ AJAX thuần túy trước đó. Cũng lưu ý rằng, mặc dù trong ví dụ này có một số trường tệp , khi bạn gửi biểu mẫu thông qua API FormData, bạn không cần sử dụng API FileReader cũng: các tệp được tự động tải .
Không có cách nào để thể hiện thông tin này trong JavaScript, vì vậy đề xuất ngây thơ của tôi chỉ đơn giản là sắp xếp nó vì JSON sẽ không hoạt động (nhắc tôi tự hỏi tại sao câu trả lời này được chấp nhận ngay từ đầu).
Tùy thuộc vào những gì bạn đang cố gắng đạt được (ví dụ: nếu bạn chỉ đang cố gỡ lỗi), có thể đơn giản là trả lại thông tin này ra khỏi tập lệnh phía máy chủ trả về siêu dữ liệu JSON có liên quan. Trong PHP, ví dụ, bạn có thể gửi FormData của bạn đến analyzeForm.php
, có thể dễ dàng truy cập mọi thứ bạn đã gắn vào FormData theo yêu cầu liên quan superglobal. Kịch bản sẽ tiêu hóa nội dung của biểu mẫu của bạn và trả về thông tin có liên quan dễ dàng để phân tích cú pháp JSON. Điều này là rất không hiệu quả, vì vậy nó có lẽ không thích hợp cho môi trường sản xuất, nhưng nó là một cái gì đó.
Cũ câu trả lời đúng:
Bạn có thể thử sử dụng:
alert(JSON.stringify(fd));
để xem một đại diện văn bản về cấu trúc của fd
.
Bạn cũng có thể sử dụng console.log
, nhưng đây là tính năng không chuẩn và không được đảm bảo có mặt trong tất cả các trình duyệt.
Nguồn
2012-12-01 19:30:09
Hiển thị thêm mã, cũng như HTML của bạn. –