À l'aide d'Ajax et jQuery pour vérifier si le fichier existe - renvoie toujours la réponse de 200
Je suis donc nécessaire de vérifier si un fichier existe avant d'afficher des données spécifiques aux clients...à l'aide de jQuery, j'ai ceci:
<script>
function fileExists(fileLocation) {
var response = $.ajax({
url: fileLocation,
type: 'HEAD',
async: false
}).status;
alert(response);
}
</script>
Lorsque je tente d'exécuter la fonction:
<script> fileExists('http://www.example.com/123.jpg'); </script>
(où example.com est mon domaine), j'ai TOUJOURS recevoir un code de réponse de 200. Je me demandais pourquoi ce qui se passe - se pourrait-il que j'ai une page d'erreur personnalisée définie par le biais de .htaccess? Ou, est-il une meilleure méthode pour faire cela?
Note: jQuery 1.5.1 est utilisé.
Mise à jour: il semble qu'Il est dirigé vers notre page d'erreur personnalisée définie par le biais de .htaccess:
ErrorDocument 404 http://www.example.com/errors/notfound.php
Ne sais pas si cela provoque le conflit, ou comment la contourner.
RÉSOLU
J'ai vérifié les en-têtes pour ma page 404 personnalisée, c'était de retourner un code de réponse de 200. A coder en dur l'en-tête:
<?php header('HTTP/1.1 404 Not Found'); ?>
qui serait alors de retourner le code de réponse 404 - fixer mon problème.
Oui, par exemple: 123.jpg n'existe pas sur le serveur, mais il renvoie un code d'état 200 de toute façon.
Sonne comme le serveur n'est pas configuré correctement. Ce qui se passe quand vous OBTENEZ une ressource? Ne vous obtenez toujours une de 200, mais avec un contenu qui suggère 404? Auquel cas, cela sonne comme de mauvaises config.
Essayé à l'aide de GET, toujours pas de dé -
<script> function fileExists(fileLocation) { $.ajax({ type: 'GET', url: fileLocation, success: function() { alert('Page found.'); }, error: function(jqXHR, textStatus, errorThrown){ log(jqXHR); log(errorThrown); } }); } </script>
Hey, @pennstate_fanboy. C'est génial que vous avez résolu votre problème — s'il vous plaît poster une réponse et de l'accepter, au lieu d'ajouter la réponse à la question.
OriginalL'auteur William Orazi | 2011-09-19
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas vous vous rendez compte de manière asynchrone avec les rappels d'erreur et de réussite?
Remarque: ne Pas faire de bétise .htaccess pour cela --
ErrorDocument 404 http://www.example.com/errors/notfound.php
OriginalL'auteur kalyfe
Il est apparu mon émis existé avec ma page 404 personnalisée, qui était de retourner un code d'état 200. J'ai dû coder la réponse 404 du code en utilisant le php header() de la fonction, ce qui a résolu le problème que j'avais. Maintenant, si la page n'existe pas, il suit correctement:
À l'aide d'une méthode simple pour tester si la page ou le fichier n'existe pour le moment:
Grâce à @kalyfe pour la suggestion pour changer de méthode asynchrone.
http_response_code(404);
pour définir un code d'état 404.OriginalL'auteur William Orazi