Com o jQuery:
$.ajax({
url:'http://www.example.com/somefile.ext',
type:'HEAD',
error: function()
{
//file not exists
},
success: function()
{
//file exists
}
});
EDITAR:
Aqui está o código para verificar o status 404, sem usar o jQuery
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
Pequenas alterações e, em vez disso, poderia verificar o status do código de status HTTP 200 (êxito).
EDIÇÃO 2: Como a sincronização XMLHttpRequest foi preterida, você pode adicionar um método utilitário como este para fazê-lo de forma assíncrona:
function executeIfFileExist(src, callback) {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (this.readyState === this.DONE) {
callback()
}
}
xhr.open('HEAD', src)
}
OnReadyStateChange
associar um evento antes de verificar o HTTP_STATUS.Uma abordagem semelhante e mais atualizada.
fonte
$.ajax
parece melhor se for mais compatível com versões anteriores, certo?Isso funciona para mim:
fonte
eu usei esse script para adicionar uma imagem alternativa
HTML:
http://wap.w3schools.com/jsref/event_onerror.asp
fonte
Enquanto você estiver testando arquivos no mesmo domínio, isso funcionará:
Observe que este exemplo está usando uma solicitação GET, que além de obter os cabeçalhos (tudo o que você precisa para verificar se o arquivo existe) obtém o arquivo inteiro. Se o arquivo for grande o suficiente, esse método poderá demorar um pouco para ser concluído.
A melhor maneira de fazer isso seria mudar esta linha:
req.open('GET', url, false);
parareq.open('HEAD', url, false);
fonte
async: false
, a operação síncrona no Firefox versão 30.0 e posterior e nas versões recentes / atuais do Chrome foi preterida devido à experiência desfavorável do usuário. A tentativa de uso resulta em falha / erro. Deve usarasync: true
com a função de retorno de chamada para operação assíncrona.Eu estava tendo um problema de permissões entre domínios ao tentar executar a resposta a esta pergunta, então fui com:
Parece funcionar muito bem, espero que isso ajude alguém!
fonte
Veja como fazê-lo da maneira ES7, se você estiver usando o transpiler Babel ou o Typescript 2:
Em seu outro
async
escopo, você pode verificar facilmente se existe um URL:fonte
Eu uso esse script para verificar se existe um arquivo (ele também lida com o problema de origem cruzada):
Observe que o seguinte erro de sintaxe é gerado quando o arquivo que está sendo verificado não contém JSON.
fonte
Uma chamada assíncrona para verificar se existe um arquivo é a melhor abordagem, pois não prejudica a experiência do usuário, aguardando uma resposta do servidor. Se você fizer uma chamada
.open
com o terceiro parâmetro definido como false (como em muitos exemplos acima, por exemplohttp.open('HEAD', url, false);
), esta será uma chamada síncrona e você receberá um aviso no console do navegador.Uma abordagem melhor é:
fonte: https://xhr.spec.whatwg.org/
fonte
.open
com o terceiro conjunto de parâmetros paratrue
se certificar de que o chama de forma assíncrona, assimclient.open("HEAD", address, true);
@PierrePara um computador cliente, isso pode ser alcançado por:
Este é o meu programa para transferir um arquivo para um local específico e mostra um alerta se ele não existir
fonte
Função JavaScript para verificar se existe um arquivo:
fonte
Primeiro cria a função
Depois de usar a função da seguinte maneira
fonte
Esta é uma adaptação à resposta aceita, mas não consegui o que precisava da resposta e tive que testar se funcionava como um palpite, por isso estou colocando minha solução aqui.
Precisávamos verificar se um arquivo local existia e permitir apenas que o arquivo (um PDF) fosse aberto se ele existisse. Se você omitir o URL do site, o navegador determinará automaticamente o nome do host - fazendo com que ele funcione no host local e no servidor:
fonte
O que você precisa fazer é enviar uma solicitação ao servidor para que ele faça a verificação e, em seguida, enviar o resultado para você.
Com que tipo de servidor você está tentando se comunicar? Pode ser necessário escrever um pequeno serviço para responder à solicitação.
fonte
Isso não aborda a questão do OP, mas para quem está retornando resultados de um banco de dados: aqui está um método simples que eu usei.
Se o usuário não fizesse o upload de um avatar, o
avatar
campo seriaNULL
assim, então eu inserirei uma imagem de avatar padrão noimg
diretórioentão
fonte
Funciona para mim, use o iframe para ignorar os navegadores. Mostrar mensagem de erro GET
fonte
Queria uma função que retornasse um valor booleano, encontrei problemas relacionados ao fechamento e assincronicidade. Eu resolvi desta maneira:
fonte