2010-05-21 13 views
6

Bir örnek olarak, Gmail'in arayüzünü jQuery Ajax ile kısmen klonlamak ve periyodik otomatik kaydetme ile gönderme yapmak istediğimizi varsayalım. Ve özellikle, hata işleme, ağ ve diğer hataları beklemeyi umduğumu ve sadece iyimser olmak yerine farklı hataların hassas bir şekilde ele alınmasını istediğimizi varsayalım.Ajax kolaylık yöntemleri ve hata işleme ile ilgili jQuery en iyi uygulamaları nelerdir?

$ .ajax() öğesinin "düşük düzey" özelliğini kullanırsam, hata geri bildirimi nasıl belirlenir, ancak kolaylık yöntemleri $ .get(), $ .post() ve .load() bir hata geri bildiriminin belirtilmesine izin vermez.

Kötümser hata işleme için en iyi yöntemler nelerdir? Belirli sarılmış kümelerle bir .ajaxError() dosyasını veya $ .ajaxSetup() öğesinde bir iç geçirme stili genel hata işleyicisi kaydederek mi? Bir otomatik kaydetme başarısız olursa ve belki de hata türüne göre özelleştirilen bir mesaj gönderilirse, kodun ilgili bölümleri otomatik kaydetmeyi başlatmak için nasıl görünecek? yaygın bir uygulama olmayan $.ajax fonksiyonları sırasında hatalar için genel bir geri arama işleyicisi belirtmek için $.ajaxSetup kullanmaktır

cevap

10

sayesinde. Örneğin. İçinde

function init() { 
    $.ajaxSetup({ 
     error: handleXhrError 
    }); 
} 

function handleXhrError(xhr, errorType, exceptionThrown) { 
    // ... 
} 

handleXhrError Gmail yaptığı gibi kalıcı bir pencere ya da bazı bildirim çubuğu ya görüntülemek veya işlevsel gereksinimlere bağlı tüm document yerini alabilir. xhr.responseText ve/veya HTTP status code tarafından xhr.status'dan alınan yanıt gövdesine göre harekete geçebilirsiniz. Yanıt gövdesinin ve durumunun değerleri, sunucu tarafında açık olarak kontrol edilebilir. Bunlar problem hakkında yeterince bilgi sağlamalı ve hangi hata eylemini yapmalıdır. Bir zaman aşımı meydana geldiğinde, errorType, 'timeout''a eşit olacaktır (yani ağ problemi).

İlgili konular