jQuery AJAX hata işleme

4 Cevap php

Ben burada soruları aradık ama ben jQuery'nin AJAX hata işleme nasıl kullanılacağını iyi bir anlayışa zorunda değilim (bir çaylak im, bu yüzden sadece gerçekten mantıklı değil.)

Herkes bir acemi için bu tarif edebilir misin? Şu anda AJAX ile bir PHP komut dosyası için bilgi gönderme, ama script döndürülen verileri bir hata ya da başarı ise jQuery tanımak için izin istiyor değilim.

Thanks! Dave

4 Cevap

Ajax çağrısından hata dönüş başarılı değildi bir sayfa yükü sonuçlar döndürüyor. Bu php sayfasında geçerli bir sayfa döndürür ki olabilir, ama ne istediğinizi değil sonuçlar. Bu başarı karşılığında Withing işlenir. Umarım aşağıdaki kod snippit göstermek yardımcı olacaktır ...

$.ajax({
    type: "POST",
    url: "login.php",
    data: "action=login&user=" + user + "&pass=" + pass,
    success: function(xhr){
        if ((xhr == "Invalid Login") 
                || (xhr == "Invalid charaters in username.") 
                || (xhr == "Missing username or password.")
                || (xhr == "Unknown Error")) {
            $("#loginMessageContent").html(xhr);
        }
        else {
            simplemodalClose (dialog);
        }
   }, 
   error: function(xhr) {
       alert ("Oopsie: " + xhr.statusText);
   }
});

JQuery AJAX hata işleme HTTP Request bir hata varsa işlemek için uygulanan değil script "hata" veya "başarı" dönüyor eğer. Sunucu hata (örnek olarak Bulunamadı 404 veya 500 Server Error) atarsa ​​o jQuery hata fonksiyonları tetikleyecektir. Bu birkaç şekilde ele alınabilir, ama bir güzel bir şekilde kullanıcı izin bir div bir hata olduğunu bilmek göstermektir.

HTML

<div id="error" style="display: none">There was an error processing your last request</div>

jQuery

$(function(){
   $("#error").ajaxError(function(){
      var $error = $(this);
      $error.slideDown(500, function(){
          window.setTimeout(function(){
              $error.slideUp(500);
          }, 2000);
      }); 
   });
});

Bir hata oluşursa, "başarı" yöntemlerinin hiçbiri ateş edecek, ve div aşağı doğru kayacaktır, 2 saniye bekleyin, sonra geri kaydırın.

Testing your script for errors

Ben sunucu script "hata" veya "başarı" ya geri istemci benzer bir şey gönderiyor gibi sesler nitelendirdiği belirtildiği gibi.

Bir $.post kullanıyorsanız, örneğin, işleme kodu hata gibi görünebilir:

$.post('/your/url', { save_me: true }, function( data ){
   if(data == "error"){ 
      // handle error
   } else {
      // handle success
   }
}

This is only 1 approach. I am building an application that returns all of its data in JSON. If there is an error then the JSON message is changed to reflect this. Every return object has a "status" of either "success" or "error". If it is an error then there is an "error_message" part of the JSON that describes the error.

Umarım yardımı olur.

Bu senin sorunun değil olsa olsa alakalı beri, ben burada yayınlayacağız.

Son ile JQuery v1.4 release, JSON yanıtları şimdi doğrulanır. Ben döndü, çünkü benim app kırdı:

 {success:true}

ve şimdi olması gereken oluyor

 {"success":true} // HAS to be double quotes, single won't do it

Eğer doğru ise, bu hata işleyicisi çağırır. Kolay düzeltme ama anlamaya biraz aldı.