web-dev-qa-db-ja.com

PHP run via。AJAX?

PHPスクリプトがどこかで失敗した場合にAJAXがPHPエラーコードを返すようにする方法はありますか?私はチュートリアルに従って、これを私のPHPに入力しました:

 $ return ['error'] = true; 
 $ return ['msg'] = "DBに接続できませんでした"; 

そして、それがJSONデータであることに気付くまで、すべては順調でした。標準の$ _POSTと返されたHTMLデータを使用してエラーを返す方法はありますか(jQueryのAJAX error:イベントをトリガーするなど)。

35
Bojangles

JQueryについては知りませんが、成功と失敗(HTTP 200 OKとHTTP!= 200)のAjaxリクエストを区別する場合は、PHPスクリプトがHTTPコードで応答することを望むかもしれません200に等しくない:

if ($everything_is_ok)
    {
        header('Content-Type: application/json');
        print json_encode($result);
    }
else
    {
        header('HTTP/1.1 500 Internal Server Booboo');
        header('Content-Type: application/json; charset=UTF-8');
        die(json_encode(array('message' => 'ERROR', 'code' => 1337)));
    }
90
Linus Kleen
$return = array();
$return['msg'] = "Could not connect to DB";

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']  == 'XMLHttpRequest')
{
    header('Cache-Control: no-cache, must-revalidate');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Content-type: application/json');
    die(json_encode($return));
}
1
Webist