Hi all Tôi có mã này:XMLHttpRequest trong google-chrome không báo cáo sự kiện tiến
function test()
{
req = new XMLHttpRequest();
req.upload.addEventListener("progress", updateProgress, false);
req.addEventListener("readystatechange", updateProgress, false);
req.addEventListener("error", uploadFailed, false);
req.addEventListener("abort", uploadCanceled, false);
var data = generateRandomData(currentPayloadId);
totalSize = data.length;
req.open("POST", "www.mydomain.com/upload.aspx");
start = (new Date()).getTime();
req.send(data);
}
function updateProgress(evt)
{
if (evt.lengthComputable) {
total = totalSize = evt.total;
loaded = evt.loaded;
}
else {
total = loaded = totalSize;
}
}
Ngoài ra, máy chủ của tôi đáp ứng yêu cầu OPTIONS ban đầu cho upload.aspx với 200 và Access-Control-Allow -Origin: * và sau đó yêu cầu POST thứ hai xảy ra
Mọi thứ có vẻ đúng và nó hoạt động tốt trên FireFox nhưng trên G Chrome, trình xử lý UpdateProgress không được gọi nhưng chỉ một lần và sau đó độ dài có thể chấp nhận là sai.
tôi cần các xứ Access-Control-Allow-: * bởi vì đây là một cuộc gọi cross-domain, kịch bản mẹ là một nguồn tài nguyên trên một máy chủ khác nhau thì miền upload.aspx
Bất cứ ai có thể cho tôi một số đầu mối, gợi ý, xin vui lòng giúp đỡ? đây có phải là sự cố đã biết với G Chrome không?
Cảm ơn bạn! Ova
Tính năng này có hoạt động khi không phải là CORS không? Nếu nó sau đó tăng lỗi trên http://crbug.com/new – Kinlan
cho những người đang tìm kiếm xung quanh, nội dung eval của 'func updateProgress' có thể bị bỏ qua hoàn toàn nếu sự kiện tiến trình xhr đã đặt' evt.lengthComputable' thành false. Tôi không hoàn toàn chắc chắn về những gì xác định hành vi này, nhưng nó dường như xảy ra với một đoạn trao đổi nhỏ trong yêu cầu. Bạn có thể dễ dàng kiểm tra việc hoàn thành {trong cùng hàm} (chỉ) bằng cách kiểm tra các trình xử lý sự kiện 'position' và' loaded' properties. (btw cú pháp này là không (rất có thể) tương thích với các lần lặp mới nhất của jquery.) –
Vì bạn đang sử dụng một URL tuyệt đối, nên nó không bắt đầu bằng: "http: //"? –