phpのjavascript記述部分から別のphp(関数・SQL処理等)を呼び出しSQLで値を取得後、
親画面に値を戻してテキストエリアに表示したいのですが、呼び出し元でalret()のイベントがないと表示ができません。
location.reload()など試してみましたが、やはり表示されません。
alert()はデバック用に設定していたもので、はずすと表示がされなくなり困っています。
これはどういう状況になっているのでしょうか。
また解決方法を教えてください。
◆やりたいこと
親画面にある検索ボタンで子画面ポップアップされ、
子画面で選択した値を元にSQLで値取得し、これを親画面に戻し
テキストエリアに表示。
DBはMySQL。
(抜粋)
-----
◆親画面.js
fm.createElement("<textarea name='txtMemo["+idx+"]' cols='80' rows='5'>");
◆子画面.php
//関数を呼ぶ
<script language="javascript">
<!--
window.dialogArguments.wind.top.leftFrame.submitFrame.location.href = "syori.php?fnc=setText&num="+num+"&idx="+<?=$idx;?>;
alert("これがないと親のテキストエリアに表示されない");
window.close();
//-->
</script>
◆処理 syori.php
//SQLで値を取得し、親画面に渡したい←コレができない
if($fnc == "setText")
{
$query = "select TTextMemo from TText where TNo = '$num'";
$result = db_field($query, 0);
?>
<script type="text/javascript">
<!--
document.BtmFrm.elements["txtMemo[<?=$idx;?>]"].value = "<?=$result;?>";←alertがないと表示されない
//-->
</script>
<?
exit;
}
-----
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
補足に今気が付きました。
すでに遅いかもしれませんが。> 実はこの処理の前に1つだけではなく2つ別の関数を呼んでいる処理があり、syori.phpの値変更後にwindow.close()するわけにはいかないのです。
> 問題の関数はif文で通る時と通らないときがあり、必ず通る関数ではありません。なのでwindow.close()は動かしたくないのです。
すみません、このあたりの意味が掴めません・・・。
「別の処理」→ 二つの関数を呼ぶ
↓
if(条件?){
「この処理」= shori.php → window.close()できない?
}else{
【案】この場合でもwindow.close()。テキストエリア更新はしない。
}
いずれにしろ、syori.phpの「document.BtmFrm.elements・・・」の部分はクライアントサイドで動作するので、(クライアントの)レスポンス受信時に動作するwindow(この場合はフレーム)がなければ破棄されます。なので、window.closeはそれ以降に実行する必要があります。補足の意図を「条件によらずcloseさせたい」と解すれば、条件に合致しない場合でもサーバー側はwindow.closeさせるスクリプトを返却する必要があります。(テキストエリアの更新はしない。)
参考になりますでしょうか。
この回答への補足
遅いレスですみません。再度の書込みありがとうございました。
残念ですが、今回は仕様が変更になったため、悩んでいた部分は解消することなく終わってしまいました。
ありがとうございました。
No.1
- 回答日時:
phpは読めませんが、この現象はたぶん、子画面で別フレームに処理させようとしているけれども、その前にwindow.close();してしまっているのが原因と思います。
(alertがあるとその間に処理できる)なので、syori.phpの値変更の後にwindow.close();を移せばうまくいくかもしれません。
この回答への補足
回答ありがとうございます。すぐ回答くださったのに、お返事が送れてすみません。未だ試行錯誤してやってますが、解決に至りません。
確かに、window.close()を移すと思い通りの動きになりますが、
実はこの処理の前に1つだけではなく2つ別の関数を呼んでいる処理があり、syori.phpの値変更後にwindow.close()するわけにはいかないのです。
また、その2つの関数は、その関数内でエラーalert()処理があり、それがなければ、そのままwindow.close()に実行が移る仕組みなので、意図した動きをしています。
問題の関数をその2つの関数を呼んだ後にもってくる方法もありますが、問題の関数はif文で通る時と通らないときがあり、必ず通る関数ではありません。なのでwindow.close()は動かしたくないのです。
情報が不足していまして、すみませんでした。
再度、ご教授願えませんでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- PHP PHP MySql ページング 2 2022/09/20 06:38
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Java] Edgeでのアドレスバー非...
-
window.open("about:blank")
-
同じページをブラウザで複数開...
-
子画面を自動で閉じた後、親画...
-
ツールバーやステータスバーな...
-
opener.focus();が利かない
-
ブラウザ Chromeを使っていて、...
-
サブウィンドウを常に最前面に...
-
親画面に値を戻しテキストエリ...
-
画面を閉じる(×ボタンやタスク...
-
onclickでのページ内移動
-
ホームページビルダーでウイン...
-
リンクをクリックした時に新し...
-
子画面へデータを渡したい!
-
alertの最前面表示
-
マイページはどこを開くの
-
ウインドウを毎回同じ位置、大...
-
エクセルのシート上に別のシー...
-
デジタル時計の時刻合わせの方...
-
Excelでワードアートや図を常に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[Java] Edgeでのアドレスバー非...
-
同じページをブラウザで複数開...
-
画面を閉じる(×ボタンやタスク...
-
window.open("about:blank")
-
ブラウザ Chromeを使っていて、...
-
閉じた後のwindow.closed検知
-
親ウインドのASPをリロードさせ...
-
呼び出されたページを閉じ、呼...
-
ツールバーやステータスバーな...
-
opener.focus();が利かない
-
window.openで子画面を開いた後...
-
サブウィンドウを常に最前面に...
-
alertの最前面表示
-
onclickでのページ内移動
-
JavaScriptでタブを閉じたい
-
子画面を自動で閉じた後、親画...
-
IE7でのwindow.openerがnullになる
-
リロードさせないワザ
-
ラジオボタンクリックでサブウ...
-
window.open()のオプション(fe...
おすすめ情報