• Ajaxを使ったと
    きのデバッグ方法について、質問させてください。 D...
  • guest 
    Ajaxを使ったときのデバッグ方法について、質問させてください。

    DBに登録できなかったため、2019/07/29 に質問されている方の回答を参考に、
    Status Codeが200(Ajaxは成功しているため) → PHP側の処理がおかしいと気づき、
    ajaxLike.phpを確認してみると、打ち間違いだったことが判明し、結果DBにしっかり登録することができました。

    ただ、エラーを探している中で1つ困ったことがありまして、
    ajaxLike.php内でエラーが出ている際、♡ボタンを何度押してもconsole.logに「Ajax Success」と表示されるだけで、
    ajaxLike.php内に書いたデバッグが、php.logにも、どこを探しても一切表示されませんでした(非同期通信を行っているから?)。

    (ちなみに、DBに登録成功した時は、ajaxLike.php内のすべてのデバッグが表示されました。)


    このように、Ajaxを使って、PHP側にエラーが出たとき、送信先のURLにあるデバッグを表示させるいい方法は、ありますでしょうか?

    送信先のURLのコードが長くなり、エラーが見つけにくい場合、現場ではどのように対処されているのでしょうか。
    あわせて教えていただけると幸いです。

    どうぞよろしくお願いいたします。


    【試したこと】
    こちらのサイト(https://www.alt-plus.jp/archives/2402)を参考に、ajaxLike.phpに
    ーーーー
    $data['debug'] = 'Ajaxページを表示します。';
    echo json_encode($data);
    ーーーー
    と、一番上(//共通変数・関数ファイルを読み込みより上)に適当に入れてみましたが、
    やはりデバッグは表示されませんでした。
    回答 1

    ウェブカツコーチ 
    講師からの回答
    今回のコードの場合、debug()関数でphp.logにログとして書き出すことが出来るので、それを利用したデバッグを行います。

    AjaxLike.phpでも他のコード同様に debug(‘xxxxxxxx’);
    のように記述することで、(クエリ失敗時であっても)php.logにログを書き出すことが可能です。

    AjaxLike.php内には

    debug('「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「');
    debug('「 Ajax ');
    debug('「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「');
    debugLogStart();


      debug('商品ID:' . $p_id);

    等、ダウンロードした状態で様々なログへの書き出しようのコードが書かれていますが、これらは仮にAjaxLike.php内での処理でエラーがあってもphp.logに書き出されているはずです。

    追加でデバッグを行いたい場合、同様に
    「debug('ユーザーID:' .$_SESSION['user_id’]);」
    のように記載することで変数やSESSIONの中身を確認することが可能です。