Rumah  >  Artikel  >  hujung hadapan web  >  Ajar anda cara untuk menamatkan $.AJAX request_jquery JQUERY

Ajar anda cara untuk menamatkan $.AJAX request_jquery JQUERY

WBOY
WBOYasal
2016-05-16 15:14:201107semak imbas

Baru-baru ini saya mendapati bahawa jika pengguna kerap mengklik pada permintaan ajax, terdapat dua masalah:

1. Jika anda mengklik 5 permintaan ajax berturut-turut, 4 yang pertama sebenarnya tidak sah.

2. Masalah yang lebih serius ialah: respons kepada permintaan terakhir yang dihantar mungkin bukan yang terakhir, yang boleh menyebabkan kekeliruan. Barisan gilir juga diperlukan untuk mengekalkan permintaan dan respons yang dihantar.

Saya sebenarnya telah mereka bentuk pelaksanaan baris gilir, dan kemudiannya mendapati bahawa jQuery secara langsung menggunakan kaedah batalkan, jadi tidak ada keperluan untuk pelaksanaan yang begitu rumit Lagipun, ada perkara lain yang menunggu untuk diselesaikan.

Memang mudah untuk menggunakan jquery untuk menghantar permintaan ajax, $.get, $.post, $.ajax, dll., tetapi kadangkala kita perlu menamatkan permintaan ajax di tengah-tengah.

Sebagai contoh, apabila menggunakan komet untuk berbual, selepas menghantar permintaan, pelayan biasanya menyegarkan pautan dan mengembalikan data selepas berpuluh-puluh saat. Anggapkan bahawa pelayan menyegarkan pautan setiap 30 saat Bagaimana jika kita mahu menghentikan permintaan ajax pada 10 saat?

Mari mulakan dengan kod dan terangkan kemudian

var ajaxGet = $.get(“comet_server.php”,{id:1},function(data){
….//一些操作
});
ajaxGet.abort();

Kod di atas terdiri daripada dua titik pengetahuan:

1. Jenis data yang dikembalikan oleh $.get ialah XMLHttpRequest, sila rujuk manual. (Begitu juga dengan $.post, $.ajax, $.getJSON, $.getScript)

2. Objek XMLHttpRequest mempunyai kaedah abort()

Nota: Selepas abort(), permintaan ajax berhenti serta-merta, tetapi function() berikutnya masih akan dilaksanakan. Jika anda ingin mengelak daripada melakukan operasi, anda boleh menambah pertimbangan pada permulaan function()

var ajaxGet = $.get(“comet_server.php”,{id:1},function(data){
if(data.length == 0) return true;
….//一些操作
});
ajaxGet.abort();

Tamatkan permintaan ajax:

var request = $.get(“ajax.aspx”,{id:1},function(data){
  //do something
});
//终止请求动作.
request.abort();

Halang permintaan pendua:

var request;
if(request != null)
  request.abort();
request = $.get(“ajax.aspx”,{id:1},function(){
  //do something
});
ajax & setTimeout实现 secondTry 在等待一秒之后将firstTry的ajax终止:
var firstTry = $.ajax(
 //do something
 );
var secondTry = setTimeout(function(){alert(‘ok');firstTry.abort()},1000);

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn