2015-04-03 10 views
5

In questo servizio che sto creando, una richiesta di un'immagine può comportare due possibili risposte.Ottieni il codice di stato HTTP o le intestazioni di risposta dal tag <img>?

  1. Risponde all'immagine richiesta.

  2. Risponde con un'immagine predefinita e un'indicazione che l'immagine richiesta non è immediatamente disponibile. In questo caso, la richiesta può essere ripetuta.

I modi evidenti che suggeriscano caso # 2 sono o rispondere con un codice di stato 202, o un X-Retry-In intestazione. Tuttavia, sono aperto a suggerimenti.

In ogni caso, il mio obiettivo è in qualche modo catturare questa risposta in JS (http header/status code/other ideas welcome) e riprovare automaticamente l'immagine alcuni secondi dopo.

So che qualcosa di simile potrebbe essere fatto con ajax, ma preferirei davvero una soluzione che utilizzasse solo i tag JS + img >.

+5

L'unico modo per ottenere le intestazioni HTTP è quello di rendere il HTTP in JS. E ciò può essere fatto solo tramite un XMLHTTPRequest. * Modifica: * Sebbene, potresti provare ad ascoltare l'evento 'error' su' img' e vedere quali informazioni ti dà. –

+1

Se non c'è altro modo, suppongo che dovrò ricorrere alle richieste Ajad HEAD in loop. – Gabriel

risposta

0

provare qualcosa di simile:

$.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

Questo non funzionerà se quella risorsa immagine nell'url specificato non è abilitata per CORS. – somedev

Problemi correlati