Dengan jQuery:
$.ajax({
url:'http://www.example.com/somefile.ext',
type:'HEAD',
error: function()
{
//file not exists
},
success: function()
{
//file exists
}
});
EDIT:
Berikut adalah kode untuk memeriksa status 404, tanpa menggunakan jQuery
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
Perubahan kecil dan itu bisa memeriksa status kode status HTTP 200 (sukses), sebagai gantinya.
EDIT 2: Karena sinkronisasi XMLHttpRequest sudah usang, Anda dapat menambahkan metode utilitas seperti ini untuk melakukannya async:
function executeIfFileExist(src, callback) {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (this.readyState === this.DONE) {
callback()
}
}
xhr.open('HEAD', src)
}
OnReadyStateChange
acara sebelum Anda memeriksa HTTP_STATUS.Pendekatan serupa dan lebih mutakhir.
sumber
$.ajax
tampaknya lebih baik jika lebih kompatibel ke belakang, kan?Ini bekerja untuk saya:
sumber
saya menggunakan skrip ini untuk menambahkan gambar alternatif
HTML:
http://wap.w3schools.com/jsref/event_onerror.asp
sumber
Selama Anda menguji file pada domain yang sama, ini akan berfungsi:
Harap perhatikan, contoh ini menggunakan permintaan GET, yang selain mendapatkan tajuk (semua yang Anda butuhkan untuk memeriksa cuaca ada file) mendapatkan seluruh file. Jika file cukup besar, metode ini dapat memakan waktu cukup lama untuk selesai.
Cara yang lebih baik untuk melakukan ini adalah mengubah baris ini:
req.open('GET', url, false);
menjadireq.open('HEAD', url, false);
sumber
async: false
, operasi sinkron di Firefox versi 30.0 dan yang lebih baru, dan di Chrome versi terbaru / saat ini tidak digunakan lagi karena pengalaman pengguna yang tidak menguntungkan. Penggunaan yang diupayakan menyebabkan kegagalan / kesalahan. Harus digunakanasync: true
dengan fungsi panggilan balik untuk operasi asinkron.Saya mendapatkan masalah izin lintas domain ketika mencoba menjalankan jawaban untuk pertanyaan ini, jadi saya menjawab:
Tampaknya bekerja dengan baik, semoga ini membantu seseorang!
sumber
Berikut ini cara melakukannya dengan cara ES7, jika Anda menggunakan Babel transpiler atau Typescript 2:
Kemudian di dalam
async
ruang lingkup Anda yang lain , Anda dapat dengan mudah memeriksa apakah url ada:sumber
Saya menggunakan skrip ini untuk memeriksa apakah ada file (juga menangani masalah lintas asal):
Perhatikan bahwa kesalahan sintaks berikut dilemparkan ketika file yang diperiksa tidak mengandung JSON.
sumber
Panggilan async untuk melihat apakah ada file adalah pendekatan yang lebih baik, karena itu tidak menurunkan pengalaman pengguna dengan menunggu respons dari server. Jika Anda melakukan panggilan ke
.open
dengan parameter ketiga disetel ke false (seperti dalam banyak contoh di atas, misalnyahttp.open('HEAD', url, false);
), ini adalah panggilan sinkron, dan Anda mendapatkan peringatan di konsol browser.Pendekatan yang lebih baik adalah:
sumber: https://xhr.spec.whatwg.org/
sumber
.open
dengan set parameter ketigatrue
untuk memastikannya memanggilnya secara tidak sinkron, seperticlient.open("HEAD", address, true);
@Pierre iniUntuk komputer klien ini dapat dicapai dengan:
Ini adalah program saya untuk mentransfer file ke lokasi tertentu dan menunjukkan peringatan jika tidak ada
sumber
Fungsi JavaScript untuk memeriksa apakah ada file:
sumber
Pertama menciptakan fungsi
Setelah menggunakan fungsi sebagai berikut
sumber
Ini adalah adaptasi untuk jawaban yang diterima, tetapi saya tidak bisa mendapatkan apa yang saya butuhkan dari jawaban, dan harus menguji ini berhasil karena itu firasat, jadi saya meletakkan solusi saya di sini.
Kami perlu memverifikasi file lokal ada, dan hanya mengizinkan file (PDF) untuk membuka jika ada. Jika Anda menghilangkan URL situs web, browser akan secara otomatis menentukan nama host - membuatnya berfungsi di localhost dan di server:
sumber
Yang harus Anda lakukan adalah mengirim permintaan ke server untuk melakukan pemeriksaan, dan kemudian mengirimkan kembali hasilnya kepada Anda.
Jenis server apa yang Anda coba untuk berkomunikasi? Anda mungkin perlu menulis layanan kecil untuk menanggapi permintaan.
sumber
Ini tidak menjawab pertanyaan OP, tetapi bagi siapa saja yang mengembalikan hasil dari database: inilah metode sederhana yang saya gunakan.
Jika pengguna tidak mengunggah avatar, maka
avatar
bidangnya adalahNULL
, jadi saya akan menyisipkan gambar avatar default dariimg
direktori.kemudian
sumber
Ini berfungsi untuk saya, gunakan iframe untuk mengabaikan browser menampilkan pesan kesalahan GET
sumber
Saya menginginkan fungsi yang akan mengembalikan boolean, saya mengalami masalah terkait dengan penutupan dan asinkronisitas. Saya memecahkan masalah ini:
sumber