Müşteriye PHP hataları gönderme için uygun bir mekanizma

5 Cevap php

Greetings,
I was trying to discover a proper way to send captured errors or business logic exceptions to the client in an Ajax-PHP system. In my case, the browser needs to react differently depending on whether a request was successful or not. However in all the examples I've found, only a simple string is reported back to the browser in both cases. Eg:

if (something worked)
    echo "Success!";
else
    echo "ERROR: that failed";

Tarayıcı Ajax yanıtı geri döndüğünde, bir hata oluştu bilmek tek yolu (belki de 'hata' arıyor) dizesini ayrıştırmak olacaktır. Bu aksak görünüyor.

Is there a better/proper way to send back the Ajax response & notify the browser of an error?
Thank you.

5 Cevap

Ben genelde böyle bir JSON yanıt geri göndermek:

$response = array('status' => 'error', 'message' => 'an unknown error occured');

if( some_process() ) {
    $response['status'] = 'success';
    $response['message'] = 'Everything went better than expected.';
} else {
    $response['message'] = "Couldn't reticulate splines.";
}

die( json_encode($response) );

Yani, benim JavaScript response.status durumunu kontrol edin ve "başarısından" veya "hata" ve ekran response.message uygun bir değer için bakabilirsiniz.

500 (Dahili sunucu hatası) bir HTTP durum kodu geri göndermek ve daha sonra vücutta hata mesajı içerebilir. Müvekkilin AJAX kütüphanesi daha sonra bir hata olarak ele (ve uygun bir geri vs diyoruz) Eğer yanıt dizeleri aramak zorunda kalmadan gerekir.

ne oldu kullanıcıya oluyor ne bir durumunu gösteren ve çok önemli.

Eğer ajax yanıtları yapı istiyorum ben, sen json formatına bakmak gerekir.

if (something worked)
    echo '{ "error": 0 }';
else
    echo '{ "error": 1 }';

Eğer json dünyasına ayak basan sonra, daha yapısal çıkış göndermek mümkün olacak. Örneğin:

if (something worked)
    echo '{ "error": 0 }';
else
    echo '{ "error": 1, "code": 889, "desc": "Something bad happened" }';

Eğer javascript bu çıktıyı aldığınızda, bir nesne haline dönüştürmek ve farklı anahtarları bağlı eylemleri alabilir.

Kütüphane json2.js bir nesnenin içine çıktı dönüştürmeye yardımcı olacaktır

Uygun http başlıkları gönderme hile yapmak ve doğru geri arama yürütmek için ajax komut söylemelidir. Biliyorum her javascript framework it XHR istekleri var için bir başarı ve hata geriçağırımına sahiptir.

header('HTTP/1.1 500 Internal Server Error');

Eğer o işlemek ya da sizin kullanıcılara doğrudan görüntüleyebilirsiniz özel bir hata kodu ve hata mesajı içeren bir JSON nesnesi geri gönderebilir:

{
     "response": 10,
     "message": "The database didn't work or something"
}

Bu da başarı için çalışmak:

{
     "response": 1,
     "message": "It worked! Yippee!"
}