ネットが遅くてイライラしてない!?

お世話になってます。

現在、社内で使う掲示板を作成しているところで、
検索条件を設定するページを、window.openで小窓を作り、
そこに条件を指定してもらうように設計しています。

小窓でセレクトボックスやら、テキストボックスに入力された値を、「検索」ボタンを押す事で、POSTして親ウィンドウに渡し、親ウィンドウにその値に基づいたSQLで、記事を
絞り込み、その結果を表示するところまでやりたいのですが、
うまくいきません。

小窓の<form の actionには親ウィンドウ(index.php)を、
targetは、同じく親ウィンドウ、methodをpostにしています。

色々とネットで調べましたが、思うようなページが見つかりませんでした。
(小窓から親ウィンドウのページを色々変えたりするのは出来ますが、小窓のデータをPOSTするようなサイトがなかった・・・)

すみませんが、是非よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

「targetは、同じく親ウィンドウ」 て、実際にはどんな文字列をいれているのでしょう?


target="_parent"とか入れても、これは、同じウィンドウ内で、フレーム分けされているときの親フレームのことですし。
フレーム分けされていないなら、target="_self"と同じ動作になります。

対策としては、JavaScriptはonの前提で
元windowのページにおいて、 body.onload か window.open 実行前か の時点で、以下を実行してwindow.nameを付けておいて、この名前をformのtargetに入れます。

ー親側スクリプトー
<body onload="window.name='oya';" >

ー子側フォームー
<form action ="index.php" method="post" target="oya">
    • good
    • 0
この回答へのお礼

ありがとうございました!
この通りにやれば思った通りに動きました。

ちなみに、
> 「targetは、同じく親ウィンドウ」 て、実際にはどんな文字列をいれているのでしょう?

ですが、こちらは、親のindex.phpを指定していました。いろいろとありがとうございます。

お礼日時:2005/11/03 23:15

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q子→親ウインドウへデータを受け渡し、子ウィンドウを閉じる。

このような処理はできないでしょうか?

子ウィンドウはコード番号の検索用。該当のコードのリンクをクリックすると、そのコード番号を親ウィンドウのテキストボックスへ落とし込む。そのタイミングで、子ウィンドウは閉じる。
子→親ウインドウへのデータの受け渡しと、子ウィンドウのクローズを同時に行うようなイメージです。
よろしくお願いします。

Aベストアンサー

こんにちは

【親ウィンドウ】
<form action="xxx.php" method="POST" name="myForm">
顧客コード
<input type="text" name="kokyaku_cd" size="10">
<a href="javascript:void(0)" onClick="window.open('search.html','search','menubar=no,height=400,width=300');">検索</a>
</form>

【子ウィンドウ】
<script language="javascript"><!--
function ich(n) {
window.opener.document.myForm.kokyaku_cd.value=n;
window.close();
}
//--></script>

<table>
<tr>
<th>顧客コード</th>
<th>顧客名称</th>
</tr>
<tr>
<td><a href="javascript:ich('ABC商店')">0001</a></td>
<td>ABC商店</td>
</tr>
<tr>
<td><a href="javascript:ich('DEF商店')">0002</a></td>
<td>DEF商店</td>
</tr>
</table>

もしくはNo.1様の言うようにidを設定して
【親画面】
<input type="text" name="kokyaku_cd" size="10" id="kokyaku_cd">

【子画面 function内】
window.opener.document.getElementById("kokyaku_cd").value=n;

でできると思います

こんにちは

【親ウィンドウ】
<form action="xxx.php" method="POST" name="myForm">
顧客コード
<input type="text" name="kokyaku_cd" size="10">
<a href="javascript:void(0)" onClick="window.open('search.html','search','menubar=no,height=400,width=300');">検索</a>
</form>

【子ウィンドウ】
<script language="javascript"><!--
function ich(n) {
window.opener.document.myForm.kokyaku_cd.value=n;
window.close();
}
//--></script>

<table>
<tr>
<th>顧客コード</th>
<t...続きを読む

Q子窓で送信したら、親ウィンドウを更新したい

はじめまして。leaz024と申します。

仕事で次のようなものHTMLを作成することになりました。
・CGIで表示したページ内のボタンで、小窓(入力フォーム)を開く。
・小窓で送信ボタンを押すと、小窓は閉じる。
・送信された内容がサーバで処理された後、親窓を自動的に更新して、内容を反映させる。

CGIはPerlで作成しており、HTMLにはJavaScriptを使ってもよいことになっています。
このような動作をさせたいのですが、やり方が分かりません。
どなたか教えてください。
お願いします。

Aベストアンサー

文章を書くのは苦手なのでサンプルを挙げておきます。
1.親ウインドウ(sample01.html)に名前がなかったらユニークに
なるように名前を付ける。
2.リンククリックで子ウインドウを表示
3.子ウインドウのリンクをクリックしたら親ウインドウにtargetを指定して
サーバーにパラメータをPOSTする(サンプルではgooが表示されます)
こんな感じでしょうか?

----- sample01.html ここから -------
<html>
<head>
<script>
alert('このwindowの名前\n'+window.top.name)
if(window.top.name==""){
myDate = new Date()
nowH = myDate.getHours()
nowM = myDate.getMinutes()
nowS = myDate.getMilliseconds()
winname = nowH+":"+nowM+":"+nowS
window.top.name=winname
alert('このwindowに名前をつけました')
}
function test(winname, html){
win = window.open(html,winname);
}
</script>
</head>
<body>
<a href="javascript:test('hoge','sample02.html')">hogeウインドウopen</a>
</body>
----------- ここまで -------------------

---------- sample02.html ----------
<html>
<head>
<script>
winname=window.opener.top.name

function link(){
document.aaa.target = winname
document.aaa.submit()
window.close()
}
</script>
</head>
<body>
<a href="javascript:link()">親ウインドウにgoo表示</a>
<form name="aaa" method="post" action="http://www.goo.ne.jp" target="">
</form>
</body>
------------------ ここまで -------------------

文章を書くのは苦手なのでサンプルを挙げておきます。
1.親ウインドウ(sample01.html)に名前がなかったらユニークに
なるように名前を付ける。
2.リンククリックで子ウインドウを表示
3.子ウインドウのリンクをクリックしたら親ウインドウにtargetを指定して
サーバーにパラメータをPOSTする(サンプルではgooが表示されます)
こんな感じでしょうか?

----- sample01.html ここから -------
<html>
<head>
<script>
alert('このwindowの名前\n'+window.top.name)
if(window.top.name==""){
...続きを読む

Q子ウインドウを閉じて 親ウインドウを更新

初歩的なことなのかもしれませんが、ご教授いただけると助かります。

やりたい動作は、

親ウインドウから<a href="" target=_blank>で
子ウインドウを開きます。

子ウインドウで処理を行った後、

----ここからの動作がわかりません-----

子ウインドウ上のボタンかアンカータグで

親を再読み込み
子を閉じる
親にフォーカス

こんな動作をJAVASCRIPTで実現可能でしょうか?
結果的に、子が閉じられ、親が再読み込みされた状態でフォーカスがあたるようにできれば最高です。

暇なときでかまいませんので、どうぞよろしくお願いいたします。

Aベストアンサー

こんな感じでいいかと思います
------------------------------
<script type="text/javascript">
<!--
function p_reload(){
var pwin=window.opener;
pwin.location.reload();
pwin.focus();
window.close();
}
//-->
</script>

<button type="button" onclick="p_reload()">親を更新して閉じる</button>

Q子ウィンドウより親ウィンドウのフォームをsubmit

親ウィンドウより子ウィンドウをwindow.openにて
表示し、

parent.window.opener.document.form.コントロール名.value="111";

というふうに、子ウィンドウより親ウィンドウのコントロールに値をセットしています。これに親ウィンドウのフォームをsubmitするという処理を追加したいのですが、可能なのでしょうか??

もし可能であれば、その方法を教えてください。
よろしくお願いします!!!!

また、子ウィンドウより親ウィンドウのコントロールに値をセットした場合、親ウィンドウのonchangeイベントは発生しないようなのですが、この解消方法はないでしょうか??

よろしくお願いします!!!!

Aベストアンサー

submitは、
parent.window.opener.document.form.submit();
とすればいいです。

親ウインドウのonchangeイベントが確かに起こらないみたいですね。
子ウィンドウに(スクリプト実行中)フォーカスがあるからだと思いますが、解消する方法は、わかりません。

Qwindow.openで値の渡し方を教えてください。

画像をクリックするとwindow.htmlで新しいウインドウが開き、「IMG/AAA.jpeg」という値をwindow.htmlに渡して、画像を表示したいのですが、どのようにすればよいでしょうか。

画像をクリック(photoOpnに値が渡される)→関数photoOpn実行(window.htmlに値が渡される)→window.html表示(値を受け取り画像を表示)といった具合にしたいのですが・・・。

<html>
<head>
<script type="text/javascript"><!--
photoOpn(value){
window.open("window.html");
}
//--></script>
</head>

<body>
<a href="javascript:photoOpn('IMG/AAA.jpeg')"><img src="IMG/AAA.jpeg"></a>
</body>

ここまではやってみたのですが、window.htmlにどのように値を渡せばいいのでしょうか。

Aベストアンサー

>>1
> 結構複雑になってしまいますね。Javascriptを勉強してまもないので
> 難しく感じてしまいます(笑)
> 図々しいとは思いますが、少しながら関数等のscriptの説明をして
> 頂けませんでしょうか。

すみませんでした。
自分でやるときもなかなかコメントつける癖がなくて暫く経ったら
自分の書いたコードさえ解読できなくなることが多々あったりします。
それでも、コメント書くのが面倒だったりそもそも適切なコメントが
思い浮かばずつい、省略してしまうことが多くて自分でも困っていたり
します。(^_^;

やっていること自体は決して複雑ではないはずなんですけど、確かに
難しいかも知れませんね。

// URL エンコード
url = encodeURIComponent(url);

これはURLエンコードしています。
クエリに非ASCII文字列などを含めるときはURLエンコードします。
スラッシュはディレクトリ区切りとしても使用されているのでURLと
しては使用可能ですが念のためにURLエンコードしています。
因みにJavaScriptにはURLエンコードする関数がいくつかありますが
スラッシュをエンコードできるのは上記の関数のみのようです。
また、日本語などの文字列が含まれる場合、元の文字列が何であっても
強制的にUTF-8としてURLエンコードしてしまいますのでご注意ください。

window.open('window.html?url=' + url);

これはそのまま、URLにクエリを追加して渡しているだけです。

var query = location.search.substr(1).split('&');

ここが一番分かりにくい可能性がありますが

location.search

はURLのクエリの部分(?含む)を文字列オブジェクトとして返します。

.substr(1)

は1文字目(?を飛ばす)移行を取得しています。

.split('&')

は '&' を区切りとして分割し配列として返します。
(念のため複数のクエリが渡されたときを考慮して)

var base = './';

これは画像ファイルのURLパスです。
相対パスと絶対パスどちらも指定できます。
最後は必ずスラッシュで終わってください。

if(query != '') {

これはクエリがから文字列でなかったらという条件文です。
この条件に一致したらこれ以降のブロックを実行します。

var req = new Array();
for(var i = 0; i < query.length; i++) {
var key = query[i].split('=');
req[decodeURIComponent(key[0])] = decodeURIComponent(key[1]);
}

ここは、各クエリを連想配列に代入しています。
ここはPerlCGIなどで使用されている部分をそのままJavaScriptに
移植してみました。
代入するときにキーと値の両方をURLデコードしています。

var img = document.createElement('img');
img.setAttribute('src', base + req['url']);
document.getElementById('img').appendChild(img);

ここは img エレメントを作成し、 'img' のIDをもつエレメントの
子要素として作成した img エレメントを追加しています。

あと、うっかり忘れていて説明している段階で気がついたのですが
上記のコードの前に req['url'] があるかどうか調べないとエラーが
でる可能性が...。

説明が下手なので却って分かりにくいかも知れませんがご了承ください。
かくコード部分の詳細はネットで調べた方が早くてもっと分かりやすく
説明している所があると思いますよ。
(そもそも上記はほとんどネットから集めた情報を組み合わせただけ
ですので)

>>1
> 結構複雑になってしまいますね。Javascriptを勉強してまもないので
> 難しく感じてしまいます(笑)
> 図々しいとは思いますが、少しながら関数等のscriptの説明をして
> 頂けませんでしょうか。

すみませんでした。
自分でやるときもなかなかコメントつける癖がなくて暫く経ったら
自分の書いたコードさえ解読できなくなることが多々あったりします。
それでも、コメント書くのが面倒だったりそもそも適切なコメントが
思い浮かばずつい、省略してしまうことが多くて自分でも困っていたり
しま...続きを読む

Q別ウィンドウへのsubmitの挙動がおかしいです

はじめまして。

ページ内の押下したボタン/リンクに応じて、それぞれ別の新しいウィンドウにフォームの値を渡して処理を行うプログラムを作成しています。

リンク1押下→ウィンドウAを開く→アドレス1に遷移
リンク2押下→ウィンドウBを開く→アドレス2に遷移
ボタン3押下→自画面でアドレス3に遷移

フォームは共通で、JavaScript内でウィンドウ及びアクションの指定を行っています。


しかし、実際に動かしてみると、以下の問題が起こりました。
・ウィンドウを開いた後、いつまでも遷移しない(する時もある)
・ウィンドウを開いた後、意図しないアドレスに遷移することがある
 具体的には、新規ウィンドウで、現在開いているアドレスへの遷移
・フォームの値が送信されないことがある(する時もある)

いろいろ調べてみたのですが、原因がわかりません。
お力を貸していただけないでしょうか。
文末に抜粋したソースを掲載します。

ブラウザはIE7、関連あるかは分かりませんが、PHPとsmartyを使っています。
宜しくお願いいたします。


【JavaScript部分】
function action1(){
document.form.action = "http://www.yahoo.co.jp"
document.form.target = "_self";
document.form.submit();
}

function action2(){
window.open("", 'win2', 'width=400, height=300');
document.form.action = "http://www.google.co.jp"
document.form.target = "win2";
document.form.submit();
}

function action3(){
window.open("", 'win3', 'width=400, height=300');
document.form.action = "http://www.msn.co.jp"
document.form.target = "win3";
document.form.submit();
}

【HTML部分】
<form name="form" method="post" action="">
<input type="text" name="text1" value="">
<a href="javascript:action2();">リンク1</a>
<a href="javascript:action3();">リンク2</a>
<input type="button" value="ボタン3" onClick="action1()">
</form>

はじめまして。

ページ内の押下したボタン/リンクに応じて、それぞれ別の新しいウィンドウにフォームの値を渡して処理を行うプログラムを作成しています。

リンク1押下→ウィンドウAを開く→アドレス1に遷移
リンク2押下→ウィンドウBを開く→アドレス2に遷移
ボタン3押下→自画面でアドレス3に遷移

フォームは共通で、JavaScript内でウィンドウ及びアクションの指定を行っています。


しかし、実際に動かしてみると、以下の問題が起こりました。
・ウィンドウを開いた後、いつまでも遷移しない(する時...続きを読む

Aベストアンサー

タイミングの問題かと思われます。
window.open() で実際にwiindowを開くのに掛かる時間よりも早くsubmit() が実行されてしまうと、その後から、blank ファイルを開くので、submit情報が失われる。または、target名の同じwindowを同時に2つ開こうとしてコンフリクトしてしまうとか。
特にcpuが遅かったり、動作の重いブラウザでこの可能性があります。4-5年前には、この手の質問も結構見かけました。
目的としては、windowサイズ指定したくて、window.openを実行してるのかな?
その場合、window.open の戻り値を保持して、subwindowのonload で、submit実行するようにすれば確実のようにも思います。setTimeout で実行開始をずらすという手もあったけど、環境によって必要な時間はいろいろなので。
var t = "win2";
document.form.target = t;
var w = window.open("", t, /* 適宜指定省略 */);
w.onload = function(ff){
return function (){ ff.submit();};
}(document.form) ;

タイミングの問題かと思われます。
window.open() で実際にwiindowを開くのに掛かる時間よりも早くsubmit() が実行されてしまうと、その後から、blank ファイルを開くので、submit情報が失われる。または、target名の同じwindowを同時に2つ開こうとしてコンフリクトしてしまうとか。
特にcpuが遅かったり、動作の重いブラウザでこの可能性があります。4-5年前には、この手の質問も結構見かけました。
目的としては、windowサイズ指定したくて、window.openを実行してるのかな?
その場合、window.open の...続きを読む

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

Q画面間でのJavaScriptでの値の受け渡しについて

お世話になります。

画面(ASPで作成した画面)間でのJavaScript同士の値の受け渡しは出来るのでしょうか。

画面1から画面2を開き、画面2のJavaScriptの関数内で画面1のJavaScriptの値を変えると言った事は出来るのでしょうか。

何方かご存知でしたら、お教え下さい。
宜しくお願い致します。

Aベストアンサー

IEとFireFoxで試してみましたけど、できそうですね。
tes1.htmlからtes2.htmlを開いた場合のソースです。
関数はボタンとかから適当に呼んでください。

// tes1.htmlのJavaScript
var value=0;
function msg () {
alert(value);
}
function openWnd () {
wnd = window.open("tes2.html");
}

// tes2.htmlのJavaScript
function count () {
opener.value++; // openerが親元
alert(opener.value);
}

Qリンクをクリックした時にformからPOST送信したい。

HTML、PHP、JavaScript等でサイトを作っているのですが・・・。

【実現出来ている例】
<form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">
 <input type="submit" value="送信">
</form>
 submitボタンを一つ置いて、それがクリックされた場合に
formの内容をPOSTで送信する。

【実現したい例】
<form name="form1 method="post">
 <a href="Next.php" onClick="???">???</a>
</form>
 formの中のリンクをクリックされた場合に、formの内容を
POSTで送信したいのですが、その実現方法がわかりません。
GETで送るという手もあり得ますが、今回はどうしてもPOST
したいのですが。

Aベストアンサー

<form name="form1" method="post" action="Next.php">
<a href="#" onClick="document.form1.submit();">???</a>
</form>

onclick内の対象がform1としてあてているので、
アンカータグは別にform内に記述しなくても大丈夫です

form内にhidden等でnameとvalueを持ったパラメータがあればそれも送られます

アンカータグから動的にvalueを変更したい場合は、
document.form1.hogename.value = 'hoge';
等をsubmit()の前に行えば可能です

ただしform内に
<input type="hidden" name="hogename" value="">
を記述する等、変更先パラメータの元を用意する必要がありますのでご注意下さい


人気Q&Aランキング