2012-07-29 4 views
6

Ben isteyerek ve AJAX yoluyla veri gönderme, bir web uygulaması var ve yanıt olarak, benim sunucu tarafı duruma göre, HTTP durum kodları gönderir. böylece örneğin bir kullanıcı o ben muhtemelen 400 HTTP status code dönmek oturumunun kapalı iken giriş çalışırsa. Ve sonunda ben vbTüm AJAX çağrıları için belirli bir HTTP hatası nasıl ele alınır?

, bir uyarı ile idare Ama AJAX yoğun kullanımını yapıyorum çünkü bu HTTP Durum kodları taşınması, çok ağır olur. ben yinelenen kod neden olacaktır her AJAX isteği ile tekrar tekrar HTTP durum kodunu işleme olacağım anlamına gelir ve bu kötü bir uygulamadır.

Yani, ne arıyorum tek bir yerde bu hataları işlemek için bir yoldur, bu yüzden sadece aynı kodla tüm 400, 401, vb işlemek.

her AJAX çağrısı için elle hatalarını işleme i anda ne yapıyorum

. $.ajax() yılında statusCode kullanarak. Daha ajax çağrıları oluştururken

statusCode: { 
     500: function(data) { 
      alert('Some friendly error message goes here.'); 
     } 

Benim web uygulaması geliştikçe, benim için bir overkill gibi görünüyor, ve. Bu kod parçasını tekrar tekrar tekrar çalacağım. Sen küresel hata durumu işleyicileri kayıt $.ajaxSetup() kullanabilirsiniz

function doAjax(type,url, data, moreVars) { 
//this function is just a SIMPLE example, could be more complex and flexible. 
     $.ajax({ 
      type: type, 
      url: url, 
      data: data, 
      moreOptions:moreVars, 
      //now handling all status code. 
      statusCode: { 
       //handle all HTTP errors from one place. 
      } 
     }); 
    } 

    doAjax("POST", 'mydomain.com/login.php', dataObj); 

cevap

11

:

Halen aklımda tek bir fikir AJAX üst gibi bir şey üzerinde çalışacak bir işlev yaratıyor.

Açıklama: Gelecekteki Ajax istekleri için ayarlayın varsayılan değerler.

Örnek:

$.ajaxSetup({ 
    statusCode: { 
     500: function(data) { 
      alert('Some friendly error message goes here.'); 
     } 
    } 
}); 
+0

* "Not: Küresel geri arama işlevleri, kendi küresel Ajax olay işleyicisi yöntemlerine-'.ajaxStart ile ayarlanmalıdır()' '.ajaxStop()' '. seçenekler dahilinde daha-ziyade ajaxComplete() '' .ajaxError() '' .ajaxSuccess() '' .ajaxSend() '' $ .ajaxSetup() 'için itiraz ediyoruz." * – josh3736