• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php -> javascript 変数渡し)

php -> javascript 変数渡し

このQ&Aのポイント
  • phpからjavascriptに変数を渡す方法について説明します。
  • ファイルの存在チェックを行い、ファイルがある場合は変数をjavascriptに渡します。
  • しかし、javascript処理の部分で問題が発生しており、うまくいかない状況です。

質問者が選んだベストアンサー

  • ベストアンサー
  • aki_mana
  • ベストアンサー率25% (1/4)
回答No.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)
回答No.2

> 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)
回答No.1

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が入る。 こうなるはずよ。

oyaoyaoya777888
質問者

補足

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に渡す。という流れですが、、、 すみませんが、よろしくお願いします。

関連するQ&A