別サイトの特定のフレームへPOSTすることは可能でしょうか?
あるサイトがあります。
http://hogehoge.com/kensaku/index.html
このページは親フレームとなっており、
header, side, mainの3つの子フレームがあります。
そのページのmainのフレームへPOSTしたいのですが、
記述方法が違うのか、そもそも不可能なのかわかりませんが、
うまくいきませn
<やったこと1>
methos="post"
action="http://hogehoge.com/kensaku/index.html"
target="main"
■結果:htmlはPOSTを受け取れないのでエラー
<やったこと2>
methos="post"
action="http://hogehoge.com/kensaku/kensaku.cgi"
target="main"
■結果:値は受け取れたが、子フレームが直接表示される。
知恵をおかしください!
No.8ベストアンサー
- 回答日時:
遅くなって申し訳ありません。
回答が付いていたんですが検証が遅くなってしまって・・・。
とりあえず参考用スクリプトを以下に記述いたします。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>TEST</title>
</head>
<SCRIPT Language="JavaScript">
<!--
var FrameContent_TEST;
var sFramePageURL = 'http://web.vago.jp/test_1962/ok_wave/20090610/Fr …
var sWinName = 'TestPage';
function fShowFramePage(){
FrameContent_TEST = window.open(sFramePageURL,sWinName,'width=800,height=700,scrollbars=1');
FrameContent_TEST.focus();
CheckFrame(FrameContent_TEST);
}
function CheckFrame(w){
if(typeof(w.main) != 'undefined'){
// alert(typeof(w.main)+"を確認しました");
document.f1.target = "main";
document.f1.action = "http://web.vago.jp/test_1962/ok_wave/20090610/te …
document.f1.submit();
}else setTimeout(function(){CheckFrame(w)}, 1000);
}
//-->
</SCRIPT>
<body>
<form method="POST" name="f1">
<input type="hidden" name="TEST_TEXT01" value="試験">
</form>
<br>
試験フレームのみ【ページ開く】<input type="button" value="新しい窓を開いてFrame確認" name="B1" onClick="fShowFramePage();"><br>
試験フレームのみ【フレームチェック】<input type="button" value="新しい窓のFrame確認" name="B2" onClick="CheckFrame(FrameContent_TEST);"><br>
<br><br>
</body>
</html>
参考URL:http://hiroba.kodate.jp/qa5037537.html
No.7
- 回答日時:
JavaScriptでPOSTしなおす手法を各種ブラウザでいろいろと検証してみました。
ブラウザでできないものとできるものとに分かれました。
可能なもの
IE 8
Netscape 7.1
FireFox 3.0.10
Opera 9.63
IEとネスケはほとんど問題ありませんが後者2種はwindow.openのあと、フレームオブジェクト生成に微妙なズレが発生します。
window.openの後に「 while(typeof(WinDetail.main01) != 'undefined'); 」等と入れてオブジェクト生成まで待ったをかけてやると正常に動いてくれます。
ただ、この例みたいにwhileだけだとオブジェクト生成に万一失敗した場合、永久ループに入ってしまいますのでtimeoutでbreakしてやるプログラムを組み込んでやると良いでしょう。
反対に不可能なもの
Safari 3.1.1
GoogleChrome 2.0.172.31
上記の2ブラウザはwindow.open直後はいっこうにフレーム名オブジェクトが定義されず(バグ?)、この手法での解決に至っておりません。
とりあえず、JavaScriptのコーナーで回避策を問い合わせておりますが解答が付くものかどうか。
No.6
- 回答日時:
IE8とNetscape7はOKでしたが
Chrome,Opera,Safari,Firefoxには別窓フレーム名扱いにバグ(あるいは故意)があるみたいでNGでした。
かくなる手段として
今までのように相手側を変更しないのなら呼び出す側にフレーム表示するCGIを作って置くか、相手側変更可能でも工数的には変わらない相手側index.htmlを前者と同様のCGIに変えてフレーム表示させるかしかないと思います。
イメージとしてこんな感じ(プロポーショナルフォントだとずれるかも)
自由に利用できるサイト側にフレームを表示するCGI を置く
送信データからOnLoadで自動送信するHTMLを
サーバに吐き出して( 仮にABC.HTML) からこ
フレームを表示する機能を持つこととする
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃http://hogehoge.com/kensaku/index.html ┃
┃で呼ばれるheaderのURL ┃
┠─────┬────────────────────────┨
┃http://hog│ ┃
┃ehoge.com/│ ┃
┃kensaku/in│ 事前に動的に吐き出したABC.HTMLを指定して ┃
┃dex.html │ http://hogehoge.com/kensaku/kensaku.cgi ┃
┃で呼ばれる│ にデータを自動送信し間接的に表示させる ┃
┃sideのURL │ ┃
┃ │ ┃
┗━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━┛
参考になりますでしょうか?
たびたびの回答、ありがとうございます。
JavaScriptの方法をこちらでも試してみましたが、
Chromeなどではウントモスントモ言いませんでしたね。。。
ブラウザが多くて困ります・・・。(^^;
さて、今回の回答ですと可能な感じがしますが、
具体的に見えてきません・・・。(XX)
複雑な処理が必要ということはわかりますが・・・
どうしたものか・・・
No.4
- 回答日時:
詳細な説明のおかげで多分わかりました。
呼ばれる側に手を加えられないという条件でなら、JavaScriptを使うという条件つきで可能です。
FORMタグのnameを「f」とした場合(もちろんメソッドはPOST)
function callWin(){
// サイズ横800縦700の空の窓を「NewWin」という名前で開きます。
var WinDetail = window.open("http://hogehoge.com/kensaku/index.html","NewWin" …
WinDetail.focus();
document.f.action = "http://hogehoge.com/kensaku/kensaku.cgi";
document.f.target = "main";
document.f.submit();
}
のように
事前に対象ページをJavaScriptで開き
対象のフレーム名をターゲットにsubmitする
関数を呼び出す
のが手っ取り早いかも。
条件など微妙に異なる様でしたらごめんなさい。
No.3
- 回答日時:
> 別サイトの特定のフレームへPOSTすることは可能でしょうか?
可能か、不可能か、という以前に「フレームへPOSTする」という構文が成立しません。
ご質問の意を推測すると、
(1) Aサイトのindex.htmlは、header, side, mainの3フレームを構成し、mainフレームは kensaku.cgiでPOSTされたキーワードで検索した結果を表示するようになっている。
(2) Bサイトのページにある Aサイトの検索ホームからキーワードをPOSTすると検索結果だけが表示されるが、そうではなく(1)のフレーム構成でmainフレームに検索結果を表示することは可能か。
ということではないかと思います。
そうだとすれば、やり方はいろいろあります。
たとえば、BサイトからのPOSTに対してindex.htmlに相当するフレーム構成データを返すようにして、このときmainフレームのsrc属性値をkensaku.cgi?keyword=%E3%83%AF%E3%83%BC%E3%83%89 としてやるとか、、、
この回答への補足
回答ありがとうございます。
フレームページにPOSTしたら、
指定したフレームに値を引き継いでくれないかと思ったのですが、
ダメそうですね~。
ご推測の内容は、その通りです!
わかりやすくしていただいて、ありがとうございます。
「いろいろある」というやり方は、Aサイトの3つのフレームページを子フレームとした、
新しいページを作成するという方法ですね?
kensaku.cgiへ、URLパラメータで渡すことはできないと思うので、
同じ問題にぶちあたりそうです・・・。
認識が違うかな?
No.2
- 回答日時:
質問に対する質問でたいへん申し訳ありません(ご立腹されるかもしれませんが下記の文がどうしてもわかりません)。
> 子フレームで表示して欲しいページがブラウザ上に直接表示されてしまいます
・mainというフレームに結果表示が欲しいのにページ全体が書き換わってしまうということでしょうか?
・または、ページにある3つのフレーム(header, side, main)に4つ目を確保してそこに結果表示させたいのでしょうか?
・それとも新しいブラウザを別窓で開いてそこに結果表示させたいのでしょうか。
「親」とか「子」は状況によって立場が変化しますのでフレーム名で説明していただけたほうがわかりやすいと思います。
また、CGIを呼ぶ側のフレーム名とその手法(<form>タグ/JavaScript/その他)も添えていただきますと解決の糸口になるかと思います。
この回答への補足
たびたびのご回答ありがとうございます。
回答いただいてるのに立腹なんてとんでもありません。(^^
説明が不足してる点が良くわかりました。
やりたいことを詳細に書きますね。
■呼ぶ側にはINPUTタグがあり、入力した値をPOSTします。
■SUBMITすると別ウィンドウで、あるサイトを開きます。
■あるサイトとは、フレーム構成になっており、3つの子フレームがあります。(header, side, main)
■mainフレームでkensaku.cgiというページを開き、POSTした値を受け取りたいのです。
前提条件として、
■呼び出すサイトを修正することは極力さける。(そうしないと不可能であれば可)
こんな感じです。
たびたびの補足で申し訳ありませんが、よろしくお願いします。
No.1
- 回答日時:
文章中以下の1文のせいで、質問の意図が汲み取れないのですが
> ■結果:値は受け取れたが、子フレームが直接表示される。
これは、「POSTできている」ということは「可能」という質問に対する結果が出ているというようにとれるのですが、
また、「子フレームが直接表示される」でそうなって欲しくない別の結果を望んでいてそうするにはどうすればよいの
かというタイトルと異なる別の質問を提起しているようにも思えます。
大きく勘違いしているのが、クライアントサイドとサーバサイドの区別がごっちゃになっている点なので整理しましょう
・フレームはクライアントサイドにおけるブラウザの表示形態です
・POSTはサーバに送信されるデータの手段形式です
ここでわかるように「フレーム」と「POST」は送信データにおける(取り扱う人間の)主観的関連性は有りますが、技術的機能的に関連しているものでは有りません。
質問の意図は
「特定のCGIにPOSTしたデータから処理の結果」を「特定のフレームに対して表示したい」
ということでしょうか?
ただそれなら「<やったこと2>」で実現できていると思うのですが・・・。
最終的にどうなって欲しいのかをもう少し具体的にお願いいたします。
この回答への補足
早速の回答ありがとうございます!
説明を補足しますね。
<やったこと2>で、POSTした値は受け取れましたが、
子フレームで表示して欲しいページがブラウザ上に直接表示されてしまいます。
やりたいことは、子フレームとして表示したいんです。
元ページ→親フレーム→子フレーム
と言った形で値が渡せればと思うんですが・・・。
よろしくお願いします!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームを再送信しますか?
-
エクセルで集計したい。
-
ホームページでCGIのフォームを...
-
number 改行が追加できない
-
apacheでPerl CGIが作動せず、5...
-
cgiからsendmailを送信で文字化け
-
/bin/awk '{print $5}'ってどう...
-
CGI.pmはもう古い!?
-
.htaccessについて
-
Trees掲示板CGI(CGI-Resque氏...
-
めちゃきれい
-
生成AI画像について
-
3DCG
-
ホームページにメールフォーム...
-
cgi アクセス制限 エラー
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
-
ホームページにCGIを設置したの...
-
ホームページにCGIを設置したの...
-
サーバーのエラーでおしえてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
postデータのあるページの再表示
-
CGIで呼び出したスクリプトでJA...
-
JavaScriptのwindow.openでリフ...
-
cgiでフレーム分割した画面を作...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
「value」に2つの値をセットす...
-
チェックボックスの返す値
-
select値をhiddenのvalueに渡し...
-
VB.net データーグリッドビュー...
-
WEBページを強制的に横画面で見...
-
INPUT TYPE
-
Error: No Recipient というエ...
-
VB初心者。小数点以下の表示で...
-
FORMのselectの選択肢を最初か...
-
別formのhidden項目を自form値...
-
[HTML]プルダウンメニューの横...
-
掲示板(kentさんの所のsunbbs...
-
プログラミングについての質問...
-
チェックボックスとセレクトボ...
おすすめ情報