- ベストアンサー
JavaScriptからPHP呼び出しHTML出力で…
現在phpにてブログのカテゴリリストを取得して、投稿ページ (HTML)上にカテゴリのプルダウンを表示しようと試みている のですが、JS(JavaScript)からPHPを呼び出しHTML上に出力する 際にPHPファイルにincludeがあるとjavascriptエラーとなって しまいます。 ちなみに参考にしたホームページはこちらです。 http://www.res-system.com/item/383 PHPソース(init.php)↓ <?php include_once('entry.php'); // ←エラーの箇所 // ヘッダ header("Content-Type: application/x-javascript; charset=UTF-8"); // インスタンス生成 $obj = new XMLComm(); // 初期設定 $obj->XMLComm(); // カテゴリ取得 echo "document.write(\"$obj->getCategories()\")"; ?> HTMLソース(entry.html)↓ <HTML> <HEAD> <TITLE>BLOG ENTRY</TITLE> </HEAD> <BODY> ブログエントリー</br> <script type="text/javascript" src="/init.php"></script> </BODY> </HTML> ちなみに、include等が無い状態で任意の文字で試したのですが こちらはきちんと表示されます。 javascriptでincludeなど呼び出しているphpを起動することは できないのでしょうか… 解決策、別案などありましたらご教授いただけたら幸いです。 phpを始めたばかりの初心者で、質問自体おかしい点があるかも しれませんが、、どうぞよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
echo "document.write(\" {$obj->getCategories()} \")"; 文字列内でオブジェクトの参照を利用する時は、{}で括りましょう。 http://php.s3.to/man/language.types.string.html#language.types.string.parsing.complex でなければ、echo 文を使うなら、分割引数にする。 echo 'document.write("', $obj->getCategories(), '")';
その他の回答 (2)
- hrm_mmm
- ベストアンサー率63% (292/459)
header()出力前に、include内でよけいな出力がされてるからでは? 何らかの出力が行われると、その時点で、とりあえずのheaderが送信されてしまい、 その次のheader()出力は、contentとして評価されるのでjavascript構文としては文法エラーになります。 今回の場合は、include文をheader()より後方で実行すればいいだけでしょう。
補足
hrm_mmmさん回答ありがとうございます! 教えていただいた箇所修正したところ、エラーはなくなり ました! ただ、 echo "document.write(\" $obj->getCategories() \")"; ここの部分で表示されるのが()括弧だけなんです。 この部分を下記のように修正して echo $obj->getCategories(); 直接init.phpをたたくときちんと表示されるので値は取得できて いるのですが、phpの返り値をきちんと文字列に変換などしないと いけないのでしょうか? ちなみに$obj->getCategories()で返却される文字列は下記の ような感じです。 <select name = 'categorie'> <option value = 1>日記</option> <option value = 2>備忘録</option> </select> 色々とやってみたのですがうまくいかず、、度々お手数おかけ いたしますが、解決方法ありましたらご教授お願いいたします。
そのような場合は XMLHttpRequest が適当なのでは? ajaxで引くと沢山でてくると思おう
お礼
SAYKAさん回答ありがとうございます! ajaxは初めてだったのですが、ajaxとXMLHttpRequestで検索し、 なんとか表示することができました! ただ…携帯(docomo)ではjavascript使えないんですよね? 根本的に間違えちゃったかな…とちょっとへこんでおります。 もし携帯で表示する解決策ありましたらまたアドバイスいただ けると幸いです。
お礼
hrm_mmmさん度々回答いただきありがとうございます! 教えていただいたやり方で無事解決しました! 教えていただいたPHPマニュアル、もっと勉強しようと 思います。 ありがとうございました!