• いつもお世話になっ
    ております。 Ajax.phpにPOST送信ができず...
  • guest 
    いつもお世話になっております。
    Ajax.phpにPOST送信ができず困っております。

    開発ツールのconsoleには「Ajax Success」と出ているのですが、その後の処理が走りません。

    console.log(likeProductId)を確認すると商品IDが表示されます。
    また、php.logでもisLikeの「特に気に入っていません」が出ていますが、その後のログがないことから、POST送信ができていない、あるいはそもそもAjax.phpに接続?できていないと考えています。

    AjaxのPOST送信方法などを調べていますが、解決には至っていません。

    他にどのような観点から確認すべきか、ご教示のほどよろしくお願いいたします。
    回答 1

    ウェブカツコーチ 
    講師からの回答
    きちんと確認するべき点を事前確認されていますね!
    Ajaxのデバッグでは、主にデベロッパーツールの「ネットワークタブ」部分を使用します。
    まずはこれを使って正常にPOST送信が行われているのかを確認して問題点の切り分けを行いましょう。
    因みに、問題の切り分けとは「プログラムのどこが正常でどこに異常があるか」を割り出すことで、
    デバッグにおいて有効な手段です。今回のケースだと、まずはAjaxでのお気に入り追加処理が正常に動かないのは、javaScript側の問題か、PHP側の問題かを調査します。
    (ネットワーク画面の詳しい見方は、ネットワーク部を参照ください。)

    デベロッパーツールを起動->Networkタブを選択した状態でlikeアイコンをクリックすると、「ajaxLike.php」への新しいリクエストが表示されます。それをクリックすることでリクエストの詳細情報を表示することができます。
    特に確認するべき点はGeneralのStatus Codeです。
これがリクエスト成功の「200 OK」になっているかチェックしてください。
ここで200以外のエラーになっている場合は、エラーの内容により問題点を切り分けます。

    例)
    
404の場合:存在しないページにリクエストが飛んでいる。footer.phpのurl設定に問題がある。

    500の場合:サーバサイドエラーで、通信先のajaxLike.php内部に問題がある。

    また、詳細画面の下のForm Dataという項目でPOST送信された値のチェックが出来ます。
ここのpfoductIdが正しい商品IDが表示されているかも確認しましょう。

    Status Codeが200、かつ送信されている商品ID値が正しいのであれば、
とりあえずajaxからのajaxLike.phpへPOSTリクエストは正常に行われていると判断できます。
    その状態で正常に処理が行われていないのであれば、一旦Ajaxの部分ではなくサーバー側に問題があると方針を変えましょう。
    その際はAjaxを使って送られたPOSTを受け取ったあとのphp側の処理でおかしいところがないか等、デバッグしながら確認していってください。

    guest 
    ご返信ありがとうございます。

    いただいた内容で確認したところ、Status Codeが200、かつFormDataに商品IDが正しい値でしたので、POSTリクエストは正しく行われているとわかりました。

    おそらくサーバー側に問題があるということですので、今一度PHP側を見直してみます。