2015-04-03 23 views
5

Trong dịch vụ này mà tôi đang xây dựng, một yêu cầu cho một hình ảnh có thể dẫn đến hai phản ứng có thể xảy ra.Nhận mã trạng thái HTTP hoặc tiêu đề phản hồi từ <img> thẻ?

  1. Nó phản hồi hình ảnh được yêu cầu.

  2. Phản hồi bằng hình ảnh mặc định và chỉ báo rằng hình ảnh được yêu cầu không có sẵn ngay lập tức. Trong trường hợp này, yêu cầu có thể được lặp lại.

Những cách rõ ràng để chỉ trường hợp # 2 là một trong hai phản ứng với một mã 202 trạng thái, hoặc một X-Retry-In tiêu đề. Tuy nhiên, tôi mở để gợi ý.

Dù sao, mục tiêu của tôi là bằng cách nào đó nắm bắt phản hồi này trong JS (http tiêu đề/mã trạng thái/ý tưởng khác được chào đón) và tự động thử lại hình ảnh sau vài giây.

Tôi biết điều gì đó gần đúng này có thể được thực hiện với ajax, nhưng tôi thực sự muốn một giải pháp chỉ sử dụng các thẻ JS + <img>.

+5

Cách duy nhất để có được các tiêu đề HTTP là làm cho HTTP trong JS. Và điều đó chỉ có thể được thực hiện thông qua XMLHTTPRequest. * Chỉnh sửa: * Mặc dù, bạn có thể thử nghe sự kiện 'error' trên' img' và xem thông tin nào cung cấp cho bạn. –

+1

Nếu không có cách nào khác xung quanh nó, tôi đoán tôi sẽ phải sử dụng các yêu cầu HEAD Ajax trong vòng lặp. – Gabriel

Trả lời

0

Hãy thử một cái gì đó như thế này:

$.ajax({ 
type: "GET", 
url: "YOURURL", 
dataType: "image/png", 
success: function(img) { 
    i = new Image(); 
    i.src = img; // your image 
}, 
error: function(err) { 
    i = new Image(); 
    i.src = 'http://website.site/image.png' // your error image 
} 
}); 
+0

Điều này sẽ không hoạt động nếu tài nguyên hình ảnh đó tại url được chỉ định không được bật CORS. – somedev

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