tempフォルダにtest.txtファイルが存在すれば、
fileフォルダaaa.txtファイル名をbbb.txtファイルに変更という流れです。
変更ボタンをクリックすると、値を$testdataに渡し、ファイル有無をチェックし、ある場合は変数をjavascriptに渡すしますphpの所は問題ありませんが、
javascript処理の所がどうしてもうまくいきません。変数渡しができません。
ネット上でいろいろ調べてみましたがすべてダメでした。
ぜひ、よろしくお願いいたします。
下記はそのコードです。
ファイル名test.php
<?
$testdata = $_GET["testdata"];
$filename = "C:\\xampp\\htdocs\\test\\file\\temp\\".$testdata;
if(file_exists($filename)){//ある場合、変数をjavascriptに渡す
$testdata_script = $testdata;
}//ここまでは問題ありません。
?>
<!-- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>テスト</title>
<script type="text/javascript">
<!--
function test(file) {
obj = new ActiveXObject('Scripting.FileSystemObject');
var name = '<?php echo $testdata_script ;?>';
alert(name);
strMoveFrom = 'C:\\xampp\\htdocs\\test\\file\\aaa.txt';
strMoveTo = 'C:\\xampp\\htdocs\\test\\file\\bbb.txt';
obj.MoveFile(strMoveFrom ,strMoveTo );
obj= null
}
//-->
</script>
...省略
<form action=test.php method=get accept-charset=UTF-8>
<input type=submit value=変更 onclick=test('file')>
<input type=hidden name=testdata value="test.txt">
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というサーバー-クライアント間のデータのやり取りをしっかりと身につけてから」の目標にしましょう。
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に変えればいいわ。
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が入る。
こうなるはずよ。
この回答への補足
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jsでルートディレクトリより上...
-
Ajaxが動きません~『status=0』?
-
JavaScriptによる....
-
JavaScriptでファイルの保存
-
JavaScriptでテキス...
-
ブラウザ上でjavascriptを編集...
-
VB.NET2003 テキストボックスに...
-
一定時間ごとの実行
-
【JavaScript】ソースのコメン...
-
ASP(VBS) ←→ JavaScript の変数...
-
JavaScriptで ブラウザの閉じる...
-
jqGridの入力内容をサーバに保...
-
if(1){...}とはどういうことで...
-
正規表現について
-
PHP処理実行後のページの遷移に...
-
VBAによる第3、4水準文字の判定...
-
alert()が実行できない
-
「終了していない文字列型の定...
-
画面間でのJavaScrip...
-
VBA ステータスバー DoEvents
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ブラウザからエクセルを開く方法
-
Ajaxが動きません~『status=0』?
-
JavaScriptでテキス...
-
jsでルートディレクトリより上...
-
javascriptでのmdb接続について
-
JavaScriptによる....
-
JavaScriptでファイルの保存
-
ローカルのtest.txtを1行ずつ...
-
ブックマークレットが動かない。
-
JavaScriptで掲示板
-
ActiveXObjectについて
-
ローカル環境で動作しないJavaS...
-
ブラウザ上でjavascriptを編集...
-
javascriptでテキストファイル...
-
javascriptによるメール送信
-
クリックカウンターの挙動がお...
-
Illustrator でjavascriptによ...
-
ajax 通信 iisの設定?
-
html組込み時のカレントフォル...
-
外部SVGの参照
おすすめ情報