- ベストアンサー
php -> javascript 変数渡し
- phpからjavascriptに変数を渡す方法について説明します。
- ファイルの存在チェックを行い、ファイルがある場合は変数をjavascriptに渡します。
- しかし、javascript処理の部分で問題が発生しており、うまくいかない状況です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
質問のコード内で 命題「PHPからJavaScriptへのデータ渡し」は自己解決しているはずです。 PHP: $testdata_script = $testdata; JavaScript: (SCRIPT要素内) var name = '<?php echo $testdata_script; ?>'; alert ( name ); // PHP側のifを無くすと警告が出ますよね。 さて、暗示された命題2「ファイルのコピー」についてですが、 IEでしか利用できない ActiveXObject('Scripting.FileSystemObject'); を使う理由が不明です。 JavaScript内の変数 strMoveFrom、strMoveTo が共にXAMMPPの公開フォルダ以下にあるファイルを示していることからコピー対象ファイルがサーバー上のファイルと考えられます。 もし、コピー対象がサーバー上のファイルならPHPでコピー処理を実装したほうが、クロスブラウザに対応できますよ。 現状: PHPフォーム表示 ↓ フォームをクリック (JScriptのActiveXでコピー処理 = IEに限定され、クライアントのファイル操作になる) ↓ PHPプログラムに値が渡される&PHPフォーム再表示 提案: PHPフォーム表示 ↓ フォームをクリック ↓ PHPプログラムに値が渡され、ファイル処理&PHPフォーム再表示 いずれの方法もフォームのPHPフォームを再表示していますので、別段、JavaScriptを利用する必要はありません。 更に追加質問されていたフォームのボタンに関する挙動についてですが、 INPUT[type=button] はクリックしたときに onClickイベントしか動作しません。 INPUT[type=submit] でうまく動作したのは、onClickイベントを実行直後、FORMのデータ送信イベント(onSubmitイベント)が自動実行され、 この後、action属性に指定したURLに値を渡したからです。 提案する方法でページ遷移(リロード)が納得できない場合はAJAXの利用が考えられますが、「まずはフォーム周りの知識、CGIというサーバー-クライアント間のデータのやり取りをしっかりと身につけてから」の目標にしましょう。
その他の回答 (2)
- askaaska
- ベストアンサー率35% (1455/4149)
> button , submit buttonはそのままではただの飾りボタンでしかないわ。 onClick等でJavaScriptを実行して初めて意味のあるボタンになるの。 testの最後にdocument.forms[0].submit()のようにすれば test.phpに飛ばせるわよ。 それより たぶん、あなたは大きな勘違いをしているわ。 PHPはその画面が表示される前に実行されるの。 JavaScriptはその画面が表示された後に実行されるの。 つまり、 JavaScriptより後ろにPHPを実行しようという前提が まず間違っているのよ。 あなたのを無理やり利用しようとするなら 実行の際test.phpを実行せずに test.php?testdata=test.txt を実行し、submitをbuttonに変えればいいわ。
- askaaska
- ベストアンサー率35% (1455/4149)
JavaScriptのtest()が実行されるタイミングがわけわからないわ。 どうしてsubmitボタンで実行しているの? 私なら変更ボタンをbuttonにしてtestの最後でsubmitさせるわね。 このphpの動きを説明すると 最初にtest.phpを呼び出す →$testdataは空 次に変更ボタンをクリック →alertが出るが、表示は空っぽ →alertをOKするとtest.phpが呼び出される →$testdataにtest.txtが入る。 次に変更ボタンをクリック →alertが出るが、表示はtest.txt →alertをOKするとtest.phpが呼び出される →obj.MoveFileが実行される →$testdataにtest.txtが入る。 こうなるはずよ。
補足
askaaska様 ご回答ありがとうございます。 まず、buttonではなく、submitにしたわけですが、buttonの場合だと「変更」ボタンを押しても、test.txtを 変数$testdataに渡すことができませんでした。submitなら大丈夫でした。 ここで新たな質問ですが、buttonはなぜダメでしょうか?すみません。よろしくお願いします。 >JavaScriptのtest()が実行されるタイミングがわけわからないわ 実行されるタイミングは、、、、 このphp部分 <? $testdata = $_GET["testdata"]; $filename = "C:\\xampp\\htdocs\\test\\file\\temp\\".$testdata; if(file_exists($filename)){//ある場合、変数をjavascriptに渡す $testdata_script = $testdata; } ?> が実行された後ですね、、、 実行され、変数$testdata_scriptに値を持たせたあと、この値をjavascriptに渡す。という流れですが、、、 すみませんが、よろしくお願いします。