Saya punya masalah, ketika mengirimkan formulir semua permintaan ajax aktif gagal, dan itu memicu peristiwa kesalahan.
Bagaimana cara menghentikan semua permintaan ajax aktif di jQuery tanpa trigerring error event?
Setiap kali Anda membuat permintaan ajax, Anda bisa menggunakan variabel untuk menyimpannya:
var request = $.ajax({
type: 'POST',
url: 'someurl',
success: function(result){}
});
Kemudian Anda dapat membatalkan permintaan:
request.abort();
Anda bisa menggunakan larik pencatatan array dari semua permintaan ajax yang tertunda dan batalkan jika perlu.
Cuplikan berikut memungkinkan Anda mempertahankan daftar ( kumpulan ) permintaan dan membatalkan semuanya jika diperlukan. Terbaik untuk ditempatkan di
<HEAD>
html Anda, sebelum panggilan AJAX lainnya dibuat.sumber
Object doesn't support property or method 'indexOf'
? Saya menduga itu mungkin stackoverflow.com/a/2608601/181971 atau mungkin hanya bertukar ke stackoverflow.com/a/2608618/181971 ?Menggunakan ajaxSetup tidak benar , seperti yang dicatat pada halaman . Ini hanya mengatur default, dan jika beberapa permintaan menimpanya, akan ada kekacauan.
Saya jauh terlambat ke pesta, tetapi hanya untuk referensi di masa depan jika seseorang mencari solusi untuk masalah yang sama, inilah tugas saya, terinspirasi oleh dan sebagian besar identik dengan jawaban sebelumnya, tetapi lebih lengkap
sumber
Inilah yang saya gunakan saat ini untuk mencapai itu.
Catatan: _.setiap underscore.js ada, tetapi jelas tidak perlu. Saya hanya malas dan saya tidak ingin mengubahnya menjadi $ .each (). 8P
sumber
aboutAll
harus menghapus elemen dari array. Plus ketika permintaan selesai, itu harus menghapus sendiri dari daftar.Berikan setiap permintaan xhr id unik dan simpan referensi objek dalam objek sebelum mengirim. Hapus referensi setelah permintaan xhr selesai.
Untuk membatalkan semua permintaan kapan saja:
Mengembalikan id unik dari permintaan yang dibatalkan. Hanya untuk tujuan pengujian.
Fungsi kerja:
Mengembalikan objek dengan fungsi tunggal yang dapat digunakan untuk menambahkan lebih banyak fungsi saat diperlukan.
sumber
Saya merasa terlalu mudah untuk beberapa permintaan.
langkah1: tentukan variabel di bagian atas halaman:
step2: atur sebelumKirim dalam semua permintaan ajax:
step3: gunakan di mana pun Anda inginkan:
sumber
Saya memperpanjang jawaban mkmurray dan SpYk3HH di atas sehingga xhrPool.abortAll dapat membatalkan semua permintaan yang tertunda dari url yang diberikan :
Penggunaannya sama kecuali abortAll yang sekarang secara opsional dapat menerima url sebagai parameter dan hanya akan membatalkan panggilan yang tertunda ke url itu
sumber
Saya memiliki beberapa masalah dengan kode andy, tetapi itu memberi saya beberapa ide bagus. Masalah pertama adalah bahwa kita harus menghapus objek jqXHR yang berhasil diselesaikan. Saya juga harus memodifikasi fungsi abortAll. Ini kode kerja terakhir saya:
Saya tidak suka cara ajaxComplete () dalam melakukan sesuatu. Tidak peduli bagaimana saya mencoba mengkonfigurasi .ajaxSetup itu tidak berfungsi.
sumber
Saya telah memperbarui kode untuk membuatnya berfungsi untuk saya
sumber
Melemparkan topiku. Menawarkan
abort
danremove
metode terhadapxhrPool
array, dan tidak rentan terhadap masalah denganajaxSetup
penggantian.sumber
Buat kumpulan semua permintaan ajax dan batalkan .....
sumber
Lebih baik menggunakan kode independen .....
sumber
Sama pentingnya: katakanlah Anda ingin keluar dan Anda membuat permintaan baru dengan timer: karena data sesi diperbarui dengan setiap bootstrap baru (mungkin Anda bisa mengatakan saya berbicara Drupal, tetapi ini bisa berupa situs yang menggunakan sesi). Saya harus memeriksa semua skrip saya dengan pencarian dan ganti, karena saya punya banyak hal yang berjalan dalam kasus yang berbeda: variabel global di atas:
sumber
setiap kali Anda ingin membatalkan semua permintaan ajax, Anda hanya perlu menghubungi saluran ini
sumber
Ada solusi tiruan yang saya gunakan untuk membatalkan semua permintaan ajax. Solusi ini memuat ulang seluruh halaman. Solusi ini bagus jika Anda tidak suka menetapkan ID untuk setiap permintaan ajax, dan jika Anda membuat permintaan ajax di dalam untuk-loop. Ini akan memastikan semua permintaan ajax terbunuh.
sumber
Berikut ini cara menghubungkan ini dengan klik apa pun (berguna jika halaman Anda melakukan banyak panggilan AJAX dan Anda mencoba menavigasi).
sumber