Komple AJAX geribildirim

2 Cevap php

Ben DB kayıtları yönetimi ile jQuery / JS / PHP / MySQL uygulama oluşturmak ve güvenilir sağlamak için gerek & AJAX üzerinde kullanıcıya tam geribildirim sonu DB kayıtları geri değiştirerek, çağırır. Sorun IMHO $.ajax success: ve error: fonksiyonlar sadece AJAX taşıma katmanı başarı değil tüm süreci göstermektedir. Ne DB değişiklik başarısız olursa? Nasıl bir kullanıcıya tam geribildirim sağlayabilir?

Ben ile sona erdi

$.ajax({
   url: "/action/delete",
   data: "rowid="+rowid,
   complete: function(xmlHttp) {
   if ( xmlHttp.responseText ) alert('Success - back end returned "success"');
      else alert('failure - back end returned NULL')
   }
});  

ve PHP yanıtı:

$success = deleteRecord( $_GET(rowid) );

if($success) { 
   print 'success';
} else {
   print NULL; 
}
exit();

Fikir basit - Ben arka ucundan olumlu geri bildirim almak için yönetmek eğer, o zaman tüm operasyon başarılı, değilse - sorun meydana geldiği kullanıcı umurumda değil.

Lütfen geri bildirimler son derece takdir, şimdiden teşekkür ederiz.

2 Cevap

Yerine DOM'ye eklemek için sadece bazı yeni html bazı json veri isteğine yanıt ise, veri ile istediğiniz hata kodları ve mesajları ne olursa olsun tür yerleştirebilirsiniz. Örneğin, yanıt gibi bir şey olsaydı ...

{ 
    errorstate: 0,
    errormsg: "All systems are go",
    displaytext: "stuff I want to display when all goes well"
}

Sizin javascript kodu bu verileri incelemek ve o ihtiyacı hisseder ne yapabilirim. Ayrıca sık sık basit olabilir sunucu komut dosyası içine hata işleme daha itmek için izin verir.

Try http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback

Olası bir çözüm 200 OK gibi, bir sinyal hatası HTTP yanıt kodu kullanmak olacaktır, her şey tamam, ve hata 500 Internal Server Error, sen devlet 4 ulaştığınızda sadece kontrol edebilirsiniz.

PHP herhangi bir diğer veri gönderilmeden önce bu ("HTTP/1.0 200 Tamam") başlığı ile yapılır inanıyorum. Eğer ayarlamak için doğru başlığı değerlendirmek önce korkuyor veri yanlışlıkla gönderilecektir iseniz çıktı tamponlama açabilirsiniz.

Nasıl verilerini sunmak istediğiniz size kalmış tabii ki, size 500 örneğin sadece innerHTML = xmlHttp.responseText veya benzer. Document.getElementById ("myerrorbox") var ve php kısmi html belgeyi render olabilir -programı.