waste of time

主にPHP

CakePHP2.5.4でjQuery読み込み場所について

まだドットインストールのCakePHP入門やってます。

ajaxで記事削除するうんぬんのところでどうにもうまく動かない。PHPでエラーは出てないから多分JSの箇所が悪いんだろうと思って見なおしてみても原因がよく分からない。(そもそもドットインストールのコードを写経してるだけだし…)

最終的にどこが悪かったかというとView/Layouts/default.ctpに書いたjQueryの読み込み場所でした。最近JSはbodyタグ終了直前に書くのがよろしいというのは聞いていたので、jQueryの読み込みもbodyタグ終了直前に書いていました。ドットインストールではjQueryの読み込みだけheadタグ内に書いていて、なんでだろぉなぁ^q^と思いつつも深く考えずbodyタグ終了直前に書いちゃってたのが原因だったっぽいです。

View/Layouts/default.ctp

<head>
   <?php echo $this->Html->charset(); ?>
   <title>
        <?php echo $title_for_layout; ?>
    </title>
   <?php
        echo $this->Html->meta('icon');

        echo $this->Html->css('cake.generic');

        echo $this->fetch('meta');
        echo $this->fetch('css');
        echo $this->fetch('script');
    ?>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>  ← ちゃんとhead内に書いたら動いた。
</head>

View/Layouts/default.ctpのbody内の<?php echo $this->fetch('content'); ?>でコンテンツを読み込んでるっぽいので、コンテンツ内でjQuery使ってる場合その前に読み込まないとダメよって話だと思います。たぶん。