Tôi đang viết một ứng dụng web liên quan đến một chu kỳ liên tục tạo (và xóa) một số lượng hình ảnh công bằng trên một trang web. Mỗi hình ảnh được tạo động bởi máy chủ.Làm cách nào để tôi có thể trả về dữ liệu hình ảnh nhị phân từ yêu cầu AJAX bị hủy và đặt kết quả thành src của hình ảnh HTML/DOM?
var img = document.createElement("img");
img.src = "http://mydomain.com/myImageServer?param=blah";
Trong một số trường hợp, một số hình ảnh này sống lâu hơn trước khi tải xuống xong. Tại thời điểm đó, tôi xóa chúng khỏi DOM.
Vấn đề là trình duyệt tiếp tục tải xuống những hình ảnh đó ngay cả sau khi chúng đã bị xóa khỏi DOM. Điều đó tạo ra một nút cổ chai, vì tôi có hình ảnh mới đang chờ tải xuống, nhưng họ phải đợi những hình ảnh không cần thiết cũ để hoàn tất tải xuống trước tiên.
Tôi muốn hủy bỏ các tải xuống hình ảnh không cần thiết này. Các giải pháp rõ ràng dường như là để yêu cầu dữ liệu hình ảnh nhị phân thông qua AJAX (kể từ khi yêu cầu AJAX có thể được hủy bỏ), và thiết lập các img.src khi tải về xong:
// Code sample uses jQuery, but jQuery is not a necessity
var img = document.createElement("img");
var xhr = $.ajax({
url: "http://mydomain.com/myImageServer?param=blah",
context: img,
success: ImageLoadedCallback
});
function ImageLoadedCallback(data)
{
this.src = data;
}
function DoSomethingElse()
{
if (condition)
xhr.abort();
}
Nhưng vấn đề là điều này dòng không hoạt động theo cách tôi đã hy vọng:
this.src = data;
Tôi đã tìm kiếm cao và thấp. Không có cách nào để đặt nguồn hình ảnh thành dữ liệu ảnh nhị phân được gửi qua AJAX?
Cảm ơn bạn đã trả lời. Thật không may, tôi cần hỗ trợ trình duyệt khá rộng - và tôi không chắc chắn mã hóa base64 sẽ hoạt động; Tôi cần những hình ảnh này càng nhỏ càng tốt. – Michael