この投稿は前回の続きになります。
ajaxのurlをphpタグで書きたい https://teratail.com/questions/30151
素晴らしき回答者様のおかげでphpタグを読み込むことはできたのですが、
いくつか問題が起きました。
1.ajaxのurlをurl: "<?php echo $this->Html->url('/Sample/sample/', true); ?>",
またはurl: "<?php echo $this->html->url(array('controller' => 'Sample', 'action' => 'sample')); ?>",
にすると挙動がおかしくなる。
以下のようにindex.ctpが読み込まれてしまう。
もちろんurl: "http://localhost/cakephp3/Sample/sample",
だとうまくいきます。
2.index.ctpのidsample.js
をsample_js
やsample
にして、それに合わせてsample.jsのajax内も url: $('#sample_js').data('url'),
のように書き換えるとなぜかajaxが失敗する。
もしこの2つの挙動についてわかる方がいらっしゃたら教えて下さい。お願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
一連の質問を拝見していると、WEB アプリの基本的な仕組みをきちんと理解されたうえで作ってらっしゃるのか疑問に思ってしまうところがあります。「PHP はサーバ側で解釈され、ブラウザには HTML, css, js, 画像ファイル, JSON などの形で送信される(したがって PHP のコードは残っていない)」「JavaScript はブラウザ側で実行される」という辺りの基本は大丈夫でしょうか。
さて、(1) は、挙動からすると .ajax()
に渡している url
の値がおかしいわけです。予想としては url
が空になっているので現在のページへのリクエストが飛んじゃっているのかな、と思いましたが、ともかくこの url
がどうなっているか確かめる必要があると思います。調べ方としては、(1) ブラウザが表示しているページのソースを確認する、(2) ajax 呼び出しをキャプチャしてどの URL に飛んでいるか調べる、などが考えられます。
(2) は 404 Not Found になっている URL は http://localhost/cakephp3/
の後に<pre class=
が付いているみたいですね。
個人的には jQuery でカスタムデータ属性 data-xxx
にアクセスするときには .data('xxx')
ではなく .attr('data-xxx')
を使った方がバグが入りにくいと考えていますが、実際はどうなのでしょう。
投稿2016/03/19 08:10
編集2016/03/19 08:21総合スコア2468
0
いろいろ検証した結果以下のことがわかりました。
1.url: "<?php echo $this->Html->link('/Sample/sample/', true); ?>",
または<?php echo $this->html->link('',['controller' => 'Sample', 'action' => 'sample']); ?>",
にすると欲しいURLが取れてきておらず、文字化けしている。
2.index.ctpがid=sample.js
の場合、sample.jsではそのままの書き方ではjQueryのセレクタで受け取れない。そのためurlが空文字になり、現在のページを呼び出すことになる。そのため「もっと見る」ボタン押下時、index.ctpの内容が追加されていた。
それを解決するには、sample.jsではurl: $('#sample\\.js').data('url'),
のようにエスケープする必要があった。
残りの問題は1.の書き方のどこが違うかの検証。
・書き方自体が違うのか
・文字化けを防ぐためにエスケープしなければいけないのか
投稿2016/03/19 13:28
総合スコア599
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/19 14:02 編集
2016/03/19 14:57
2016/03/19 15:14 編集
2016/03/19 15:32
2016/03/19 15:50 編集
2016/03/20 04:18 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/19 08:49
2016/03/19 08:54
2016/03/19 09:00 編集
2016/03/19 09:00
2016/03/19 09:10 編集
2016/03/19 09:26
2016/03/19 09:28
2016/03/19 09:31
2016/03/19 10:11 編集
2016/03/19 12:40
2016/03/19 12:56
2016/03/19 12:57
2016/03/19 13:12
2016/03/19 13:34
2016/03/19 13:39
2016/03/19 13:52