解決済みの質問
現在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を始めたばかりの初心者で、質問自体おかしい点があるかも
しれませんが、、どうぞよろしくお願いいたします。
投稿日時 - 2007-07-28 04:15:14
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(), '")';
参考URL:http://php.s3.to/man/language.types.string.html#language.types.string.parsing.complex
投稿日時 - 2007-07-28 23:39:44
お礼
hrm_mmmさん度々回答いただきありがとうございます!
教えていただいたやり方で無事解決しました!
教えていただいたPHPマニュアル、もっと勉強しようと
思います。
ありがとうございました!
投稿日時 - 2007-07-29 20:04:49
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(2件中 1~2件目)
header()出力前に、include内でよけいな出力がされてるからでは?
何らかの出力が行われると、その時点で、とりあえずのheaderが送信されてしまい、
その次のheader()出力は、contentとして評価されるのでjavascript構文としては文法エラーになります。
今回の場合は、include文をheader()より後方で実行すればいいだけでしょう。
投稿日時 - 2007-07-28 11:48:03
補足
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>
色々とやってみたのですがうまくいかず、、度々お手数おかけ
いたしますが、解決方法ありましたらご教授お願いいたします。
投稿日時 - 2007-07-28 12:56:16
そのような場合は
XMLHttpRequest
が適当なのでは?
ajaxで引くと沢山でてくると思おう
投稿日時 - 2007-07-28 04:18:32
お礼
SAYKAさん回答ありがとうございます!
ajaxは初めてだったのですが、ajaxとXMLHttpRequestで検索し、
なんとか表示することができました!
ただ…携帯(docomo)ではjavascript使えないんですよね?
根本的に間違えちゃったかな…とちょっとへこんでおります。
もし携帯で表示する解決策ありましたらまたアドバイスいただ
けると幸いです。
投稿日時 - 2007-07-28 12:55:53
OKWaveのオススメ
おすすめリンク