2012-10-17 13 views
10

phần chênh lệch giữa khối mã này là gì:XMLHttpRequest.addEventListener vs XMLHttpRequest.upload.addEventListener

var xhr = new XMLHttpRequest(); 
xhr.upload.addEventListener("progress", uploadProgress, false); 
xhr.addEventListener("load", uploadComplete, false); 
xhr.addEventListener("error", uploadFailed, false); 
xhr.addEventListener("abort", uploadCanceled, false); 

xhr.open("POST", "upload_url"); 
xhr.send(some_form_data); 

và điều này:

var xhr = new XMLHttpRequest(); 
xhr.upload.addEventListener("progress", uploadProgress, false); 
xhr.upload.addEventListener("load", uploadComplete, false); 
xhr.upload.addEventListener("error", uploadFailed, false); 
xhr.upload.addEventListener("abort", uploadCanceled, false); 

xhr.open("POST", "upload_url"); 
xhr.send(some_form_data); 

Tôi đã nhìn thấy cả hai hiện thực trong các blog và các SO bài đăng, nhưng không ai giải thích tại sao họ sử dụng cái kia. Sự khác biệt duy nhất tôi có thể tìm thấy vào thời điểm này là sau này không hoạt động trên trình duyệt Android mặc định, trong khi trước đây dường như làm việc trên chỉ là về tất cả mọi thứ.

+0

tôi nghĩ 'xhr.upload' về cơ bản được sử dụng để theo dõi trạng thái uplaod của các tệp đang được tải lên nếu không sử dụng phương pháp đầu tiên luôn tốt hơn. – Amareswar

Trả lời

8

Theo thông số kỹ thuật của w3c về XMLHttpRequest. http://www.w3.org/TR/XMLHttpRequest/#the-upload-attribute

Như đã nêu ở trên, mỗi đối tượng XMLHttpRequest có đối tượng XMLHttpRequestUpload được liên kết.

Sự kiện tiến trình tồn tại cho cả việc tải xuống và tải lên. Các sự kiện tải xuống được kích hoạt trên chính đối tượng XMLHttpRequest, như được trình bày trong ví dụ trên. Sự kiện tải lên được kích hoạt trên đối tượng XMLHttpRequest.upload