AJAX isteği iptal etmek için basit bir yolu olup olmadığını merak ediyorum?
Sadece istemci tarafında XMLHTTPRequest bir 'iptaline' çağrı ötesinde, kolayca sunucu sürecini durdurmak için bir yol var? Sunucu Apache kullanıyor.
Teşekkürler
En kolay yolu sadece 503 (veya benzeri) HTTP yanıt başlığını göndermek ve sunucu tarafı uygulaması (ya da sadece uygulamayı iptal) iptal olacaktır. Hiçbir veri varsayarsak gönderilen ve / veya size sadece başarısız bir istek gibi davranabilirsiniz HTTP yanıt başlığı istemci tarafında kontrol edildi.
Kısa cevap "hayır" dır. Eğer varsa hangi durumda sunucu tarafında çok uzun bir çalışan arka planlı süreci hakkında konuşuyor sürece ikinci bir Ajax isteği üzerine bir durak başlatmak. Eğer bir Apache / PHP sunucusuna düzenli bir istek bahsediyoruz Ama eğer, o hayır ... Apache isteğiniz koşuyordu iplik tanımlamaya yeterli sorun olurdu.
Hatta işlemine başlamadan önce nasılsa Ajax isteği doğrulamak için çok daha kolay olurdu; Çalıştırdığınız olmak istediğini emin olun. Ne yaptıklarını kesintiye olamaz farkında olmak kullanıcıya ihtiyacınız varsa siz de bir JavaScript onay süreci olabilir.
Steven yayınlanmıştır gibi de yararına olabilir gibi, bir ters sürecine sahip geliyor.
Orada (birçok dedi gibi) ağ üzerinden isteğin kendisini durdurmak için iyi bir yolu vardır, ancak bu isteğin etkilerini durdurmak için nispeten kolay. yani
sunucu tarafında: yaparsın exit
sürekli sırasında bu değişiklik olacağını varsayarak, tekrar (çerezler veya oturumları gibi (bayraklar gibi davranan) global değişkenler kontrol ederek (veya komut öldürmek gerektiren ediyorum ne olursa olsun terim) script yürütme). ayrıca, (eğer varlığı için yoklamak) bayrakları gibi dosyaları veya veritabanı girdileri tutmak olabilir.
istemci tarafında: Eğer (söylediler diğerleri gibi, tüm tarayıcılarda çalışmıyor ki) abort
diyebiliriz, veya (geri arama üstündeki küresel bir semafor / bayrağını tutmak olabilir çekler hala yürütmek ya da gerekiyorsa küresel değer) görmek için. Örnek:
window.ajaxIsStillGood = true;
xhr.onreadystatechange = function( )
{
if( 4 === xhr.readyState && 200 === xhr.status )
{
if( true === window.ajaxIsStillGood ){ /* still good */ }
}
}
/* bad stuff happens */
window.ajaxIsStillGood = false; // now the code won't execute