2012-05-08 68 views
38

Khi tôi gửi yêu cầu AJAX Post và gửi tham số trong queryString trong phương thức send(),Sự khác biệt giữa dữ liệu biểu mẫu và tải trọng yêu cầu là gì?

Công cụ chụp XHR của Công cụ nhà phát triển Chrome hiển thị các thông số theo yêu cầu tải trọng. và khi tôi sử dụng chức năng bài đăng của jquery, Công cụ hiển thị các tham số trong phần Dữ liệu biểu mẫu.

Sự khác biệt là gì?

+1

Đối với độc giả trong tương lai theo này: http://stackoverflow.com/questions/9597052/how-to-retrieve-request-payload –

Trả lời

27

bạn chưa cung cấp đầy đủ thông tin như thế nào bạn sử dụng send chức năng, nhưng tôi cho rằng bạn không đặt loại mime để xác định bạn đang gửi dữ liệu mẫu

xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 

các dữ liệu được gửi là trong trường hợp này mã hóa như bạn mã hóa chuỗi truy vấn

xhr.send("name=foo&value=bar"); 

nếu không công cụ nhà phát triển sẽ không được hiểu là dữ liệu biểu mẫu.

jquery thực hiện phần lớn công việc cho bạn trong lĩnh vực này.

Cập nhật: Để trả lời một cách rõ ràng sự khác biệt là gì ...

  • nếu yêu cầu (thường là POST) có Content-type tiêu đề thiết lập để application/x-www-form-urlencoded cơ thể được dự kiến ​​sẽ được dưới dạng một tiêu chuẩn chuỗi truy vấn có khóa được mã hóa url=giá trị cặp được tham gia bởi &. Dữ liệu biểu mẫu phần sau đó hiển thị thông số khóa-giá trị (khi được xem phân tích cú pháp). Cách này phổ biến hơn nhiều trong quá khứ vì nó là một mặc định cho các biểu mẫu HTML.

  • các trường hợp khác được hiển thị trong Yêu cầu tải trọng phần (và ngày nay được phân tích cú pháp để dễ đọc cũng như các định dạng phổ biến như JSON).

+1

Du khách nên lưu ý 'xhr.setRequestHeader() 'gọi nên được đặt * giữa * cuộc gọi 'xhr.open()' và cuộc gọi 'xhr.send()'. Nếu không, bạn sẽ nhận được lỗi ngoại lệ DOM. – Martin

+8

Nó không trả lời câu hỏi 'Sự khác biệt giữa dữ liệu biểu mẫu và tải trọng yêu cầu là gì?', Chỉ cần nói làm thế nào để có được một hay khác. – Medorator

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