2012-09-11 44 views
5

Kullanıcıya bir rapor istediğinde uygulamamda bir jquery AJAX (.load() numaralı telefonu kullanarak), çok sayıda kilitlenme ve mySQL isteği yapan bir dosyaya çağrılır. Genellikle yükleme sırasında 5-6 saniye sürer ve yükleme sırasında bir yükleme gifini görüntülemek içinve .ajaxStop() kullanılır.İptal edildi AJAX isteği sonraki gezintiyi yavaşlatıyor

sorunu: Bir kullanıcı 'raporu oluşturmak' düğmesini tıklar ve daha sonra fikrini değiştirip başka bir sayfaya uygulama askıda kalır gezinmek için çalışır ve 5-6 için yeni bir sayfaya gittiğinde gelmez

ise saniye. Yeni bir sayfaya gitmeye çalışırken, .ajaxStop() yangınlarının hemen kaldırılacağını yükleyen gif'in kaldırılmasını söyleyebilirim, ancak tarayıcı bir sonraki sayfayı yüklemeden önce ajax isteğinin tamamlandığını görüyor.

Bu normal davranış mı? Bunu nasıl düzeltir/yeniden yapılandırırsınız?

+0

Sadece yorum yapıp söyleyeyim dedim, yalnız değilsiniz! Bu kesin sorunu yaşıyorum. Chrome'un müfettişi ve Firebug'dan, tarayıcı AJAX kullanılarak yapılan bekleyen ağ isteklerini iptal etti ve bir sonraki sayfada 'beklemede' olarak yalnızca 'yeni' talebe sahip. Yine de, aslında gezinmek için seçilmeden önce 5-10 saniye beklemeye devam ediyor. –

+0

Aynı sayfa: Tarayıcı, mevcut ajax isteği tamamlanana kadar her zaman gecikmektedir. Yanıt artık gerekli olmamasına rağmen. – CoreyOConnor

+0

Etki alanları arası bir istek üzerinden OpenID kimlik bilgilerini ekleyen kitaplıklar kullanıyor musunuz? – CoreyOConnor

cevap

0

İnanıyorum .ajaxStop(), beforeSend geri bildirimi false değerini döndürürse yalnızca ajax isteğini iptal eder. Bu durumda, çağrı başlatılmadı ve sunucu bir istek almadı. İstek sunucuya gönderildikten sonra, sayfa uzun bir süre geri dönene kadar istek üzerine kontrol sahibi olur. Son ajax çağrısı yapıldığı için, sayfadan ayrılırken .ajaxStop() isteği, başarıyla tamamlanırsa ve dolayısıyla yürütmeyi sonlandırırsa sonlandırılır.

ajaxStop olayı, son bekleyen Ajax isteğinin, beforeSend geri arama işlevi içinde false döndürülerek iptal edilmesi durumunda da tetiklenir.

Yukarıdaki, .ajaxStop() komutu için jquery api web sitesinden bir alıntıdır. Arama yapıldıktan ve istek gönderildikten sonra sunucunuzun, kullanıcının farklı bir sayfaya gitmesine rağmen çağrı tamamlandığını göreceksiniz. Eğer bu kadar büyük bir çağrıysa, yaşadığınız gecikmeye neden olabilir.

Bu yardımcı olur umarım.

+2

Tarayıcının, başka bir sayfaya gitmeye çalışsalar bile AJAX isteğinin geri dönmesini beklediği görülüyor. Evet, sunucu durdurulamaz ve isteksizce isteği işleyecek; ama tarayıcı _caring_'ı durdurmuş olmalıydı. İsteğin geri dönmesini beklememeliydi. –

İlgili konular