Avec jQuery:
$.ajax({
url:'http://www.example.com/somefile.ext',
type:'HEAD',
error: function()
{
//file not exists
},
success: function()
{
//file exists
}
});
ÉDITER:
Voici le code pour vérifier l'état 404, sans utiliser jQuery
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
De petits changements et il pourrait vérifier le code d'état HTTP 200 (succès) à la place.
EDIT 2: Étant donné que la synchronisation XMLHttpRequest est déconseillée, vous pouvez ajouter une méthode utilitaire comme celle-ci pour le faire en mode asynchrone:
function executeIfFileExist(src, callback) {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (this.readyState === this.DONE) {
callback()
}
}
xhr.open('HEAD', src)
}
OnReadyStateChange
événement avant de vérifier HTTP_STATUS.Une approche similaire et plus à jour.
la source
$.ajax
semble mieux s'il est plus rétrocompatible, non?Cela fonctionne pour moi:
la source
j'ai utilisé ce script pour ajouter une image alternative
HTML:
http://wap.w3schools.com/jsref/event_onerror.asp
la source
Tant que vous testez des fichiers sur le même domaine, cela devrait fonctionner:
Veuillez noter que cet exemple utilise une requête GET qui, en plus d'obtenir les en-têtes (tout ce dont vous avez besoin pour vérifier la météo du fichier), obtient tout le fichier. Si le fichier est suffisamment volumineux, cette méthode peut prendre un certain temps.
La meilleure façon de le faire serait de changer cette ligne:
req.open('GET', url, false);
àreq.open('HEAD', url, false);
la source
async: false
, le fonctionnement synchrone dans Firefox version 30.0 et ultérieure, et dans les versions récentes / actuelles de Chrome est déconseillé en raison d'une expérience utilisateur défavorable. Une tentative d'utilisation entraîne un échec / une erreur. Doit être utiliséasync: true
avec la fonction de rappel pour un fonctionnement asynchrone.J'obtenais un problème d'autorisations entre domaines lorsque j'essayais d'exécuter la réponse à cette question, j'ai donc choisi:
Cela semble très bien fonctionner, j'espère que cela aide quelqu'un!
la source
Voici comment procéder de manière ES7, si vous utilisez le transpilateur Babel ou Typescript 2:
Ensuite, dans votre autre
async
étendue, vous pouvez facilement vérifier si l'URL existe:la source
J'utilise ce script pour vérifier si un fichier existe (il gère également le problème de l'origine croisée):
Notez que l'erreur de syntaxe suivante est levée lorsque le fichier en cours de vérification ne contient pas de JSON.
la source
Un appel asynchrone pour voir si un fichier existe est la meilleure approche, car il ne dégrade pas l'expérience utilisateur en attendant une réponse du serveur. Si vous appelez
.open
avec le troisième paramètre défini sur false (comme dans de nombreux exemples ci-dessus, par exemplehttp.open('HEAD', url, false);
), il s'agit d'un appel synchrone et vous obtenez un avertissement dans la console du navigateur.Une meilleure approche consiste à:
source: https://xhr.spec.whatwg.org/
la source
.open
avec le troisième ensemble de paramètrestrue
pour vous assurer qu'il l'appelle de manière asynchrone, comme ceciclient.open("HEAD", address, true);
@PierrePour un ordinateur client, cela peut être réalisé par:
Ceci est mon programme pour transférer un fichier vers un emplacement spécifique et affiche une alerte s'il n'existe pas
la source
Fonction JavaScript pour vérifier si un fichier existe:
la source
Crée d'abord la fonction
Après avoir utilisé la fonction comme suit
la source
Ceci est une adaptation à la réponse acceptée, mais je n'ai pas pu obtenir ce dont j'avais besoin dans la réponse, et j'ai dû tester cela fonctionnait car c'était une intuition, donc je mets ma solution ici.
Nous devions vérifier qu'un fichier local existait et ne permettre l'ouverture du fichier (un PDF) que s'il existait. Si vous omettez l'URL du site Web, le navigateur déterminera automatiquement le nom d'hôte - en le faisant fonctionner dans localhost et sur le serveur:
la source
Ce que vous auriez à faire serait d'envoyer une demande au serveur pour qu'il fasse la vérification, puis de vous renvoyer le résultat.
Avec quel type de serveur essayez-vous de communiquer? Vous devrez peut-être écrire un petit service pour répondre à la demande.
la source
Cela ne répond pas à la question du PO, mais pour quiconque renvoie des résultats d'une base de données: voici une méthode simple que j'ai utilisée.
Si l'utilisateur ne téléchargeait pas d'avatar, le
avatar
champ le seraitNULL
, alors j'insérerais une image d'avatar par défaut duimg
répertoire.puis
la source
Cela fonctionne pour moi, utilisez iframe pour ignorer les navigateurs afficher un message d'erreur GET
la source
Je voulais une fonction qui retournerait un booléen, j'ai rencontré des problèmes liés à la fermeture et à l'asynchronicité. J'ai résolu de cette façon:
la source