cakephpとjavascriptを使っています。
window.openで子画面を出し、子画面上の例えば[設定]ボタンを押した時に子画面を閉じ、
子画面上のフォームの値を、親画面に反映させたいため調べてなんとか出来ました。
子画面の方でdocument.form.target = 'parent';に設定しただけで出来たので結果はいいのですが、
targetを設定しない場合でも、親画面でデータが取得できているのに表示出来なかったのが、
納得いかなくて質問しました。
function [設定]ボタンで呼ばれる関数(){
document.form.action = "/~/TestController/input"; 省略しています
☆document.form.target = 'parent';
document.form.submit();
window.close();
}
☆の行がない場合でも、
TestController内のinputメソッドでは$this->dataにフォームの値は入っていましたし、
当然親画面のinput.ctpでも$this->dataにフォームの値が入っていました。
なのに、表示出来なかったのが納得がいきません。
そうゆうもんだからと言われればそれまでですが、
きちんと理解しておきたいので、よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
"parent"とはなんでしょ?window.parentとかwindow.openerのように使おうとしてるのでしょうか。
"parent"という名前がついてたりで動作してるのならいいのですが。
値は入っているが表示はされない、というのがログ等では確認できるという意味ならば
親ウィンドウではなく違うとこに送信されてるように思えます。
もしくはちゃんとデータが送信できているなら $this->data[Test][hoge] がダメということです。
$this が何か知りませんが、Testとhogeは文字列ではないので定数展開を試みます。
ついでにsubmit&closeはFirefoxだと送信前に閉じてしまうかと。
親画面に名前はつけていませんが、
document.form.target = 'parent';
としただけで親画面を認識しています。(IE8/Firefox4で確認)
ありえないですか?
動いているのですが…
input.ctpの
$this->data[Test][hoge]のデータを表示直前で、
ウォッチ式で見てみましたが、きちんと値は入っています。
ですが、表示は出来ません。
> ついでにsubmit&closeはFirefoxだと送信前に閉じてしまうかと。
submit()した後に、window.close()していますが、
問題なくデータを送信できているようです。
こちらも本来ならおかしいでしょうか。
No.1
- 回答日時:
言ってることがよくわかんないですがちゃんと動作してないんでは。
それでは動作しない環境があると思いますし。
試しに書きましたが親にform作ってsubmitをコールした方が確実かと。
// 親
window.name = "main";
function openSub() {
window.open('sub.php', "sub");
}
<button onclick="openSub();">Open</button>
// 子
function sendToOpener() {
var form = document.getElementById("formSub");
form.target = "main";
form.action = "index.php";
form.submit();
return true;
}
<form id="formSub" method="POST">
<input type="text" name="hoge" value="hohoge" />
<a href="javascript: window.close();" onclick="return sendToOpener();">Send</a>
</form>
この回答への補足
ありがとうございます。
たくさん省略しすぎて、伝わっていなかったかもしれません。
関数名を拝借させていただきますと、
以下のような感じで書いています。
//親(input.ctp)
function openSub(){
var sub = window.open("/~/TestController/subForm", 'sub');
sub.focus();
return false;
}
<p><?php echo $this->data[Test][hoge]; ?></p> ※ここに子画面の入力を表示させたい
<form name="form">
<button onclick="openSub();">Open</button>
</form>
//子(sub_form.ctp)
function [設定]ボタンで呼ばれる関数(){
document.form.action = "/~/TestController/input"; 省略しています
☆document.form.target = 'parent';
document.form.submit();
window.close();
}
<form name="form">
<input name="data[Test][hoge]" type="text">
</form>
子画面で入力したTestモデルのhogeフィールドのデータを親画面の<p>タグ内に表示したいと思っています。
そこで☆の行を書くことで実現出来たのですが、
☆の行がなくても、input.ctpでは$this->dataの中にhogeフィールドのデータが入ってるにも関わらず、
表示できなかったのが疑問だったのです。
上記のコードでは動作しない環境がありますでしょうか。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript Google reCAPTCHAについて 1 2023/02/22 14:37
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- PHP php ログイン 1 2022/11/01 00:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
掲示板を作成しておりアップロ...
-
PHPのエラーの解消法について教...
-
phpでcookieがうまく保存されない
-
ワードプレスサイト PHP8.0.25...
-
PHP MySql 画像を取得
-
PHPで画像の渡しが上手く行きま...
-
phpの imap_search で漢字コード
-
a href リンクタグでだけで 送...
-
【PHP/MySQL】コード上で生成...
-
phpのheader("Location:#pos")...
-
アマゾンのような評価の星を選...
-
PHP8を使うと、大量のWarningが...
-
SFTPなどは使わないホームペー...
-
ファイルアップロードに関して...
-
Q&Aサイトを作成していてURLの...
-
アップロード画像数でCSSを分け...
-
アップロードファイルの数に応...
-
ファイルアップロードの上限を...
-
メールフォームのタイトルが文...
-
PHPのセッション有効期限について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPでURLにジャンプするには?
-
フォーム送信後の更新ボタンで...
-
PHPのエラーの解消法について教...
-
テキストリンクをPOST送信したい
-
JavaScript変数をPHPへ渡す
-
セッションを使わずに遷移先画...
-
PHPでファイルアップロード時に...
-
フォームで作った送信ボタンが...
-
phpで、フォームのラジオボタン...
-
$_POST['hoge']のデータをフラ...
-
ボタンをクリックでPHP文を実行
-
ローカルにあるhtmlのフォーム...
-
POSTデータをフォームに残す方法
-
フォームでの記入項目
-
Submit(送信ボタン)を押した...
-
なぜ、unexpected T_VARIABLEに...
-
formの外にあるチェックボック...
-
PHP 入力フォームにて半角スペ...
-
サブウィンドウのFORM内データ...
-
アマゾンのような評価の星を選...
おすすめ情報