ひどく初歩的な質問かとは思いますが、教えて頂きたいです。
Fessという全文検索システムを利用した検索サイトを構築しています。
http://fess.codelibs.org/ja/articles/article-4.h …
上のページのソースを使って、検索フォームを作成したのですが、
検索結果を同ページ内では無く、別フレームに表示したいです。
<div id="subheader"></div>
<div id="result"></div>
の部分をどうにかすれば良いのかな、とは思っているのですが
皆目見当が付かないため、ご教授宜しくお願い致します。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>検索サイト</title>
</head>
<body>
<div id="header">
<form id="searchForm">
<input id="searchQuery" type="text" name="query" size="30"/>
<input id="searchButton" type="submit" value="検索"/>
<input id="searchStart" type="hidden" name="start" value="0"/>
<input id="searchNum" type="hidden" name="num" value="20"/>
</form>
</div>
<div id="subheader"></div>
<div id="result"></div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9. …
<script type="text/javascript" src="fess.js"></script>
</body>
</html>
No.4ベストアンサー
- 回答日時:
ANo3です。
>JSONPは利用していません
ajaxでデータを取得しているのはあってますよね?
データをjsonで取得しているのか、他の形式で取得しているのかわかりませんが、ajaxをご利用なら、ご使用のスクリプトは大きく分けて、
1)サーバにリクエストを送る処理
2)データを受取り、ブラウザに表示する処理
とからなっていると想像します。
1)の部分は変更する必要はありません。
2)の部分でHTMLのDIVやSPAN等の内容にデータを反映している処理(=DOM操作)で、対象とする要素を例えば、
document.getElementById(~~)
等のような方法で特定していると想像しますが、この時のdocumentはスクリプトがあるdocumentObject(=HTML文書)を意味しています。
他フレームの文書(=別のHTML文書)にデータを反映したい場合は、他フレームの文書(documentObject)のDIVやSPAN(=DOM)を対象とするように修正する必要があります。
上記のgetElementById()を例にすると、
(他フレームのdocumentObject).getElementById(~~)
などとすることで、対象をそのフレーム内の要素として指定することができます。
具体的には
parent.frames["hoge"].document.getElementById(~~)
のような記述になると思います。
上記のような修正を、表示処理の対象を指定している部分に対して行ってください。
詳細な説明は、検索するか、ANo3のリンク先から辿れると思います。
No.5
- 回答日時:
fessの検索結果を直接参照するところでWebサーバーの制限にひっかかっていると思うのですが。
サーバーの制限が変えられないのであれば
検索処理の前にシンプルなInnerFrameを持つHTMLを開き、開いたHTMLのInnerFrameを表示対象にしてみては如何でしょうか?
No.3
- 回答日時:
参考サイトにある方法のうちで・・・
ajaxでデータを取得していて、jsonpでcallback利用の処理を行っているのでしょうか?
(他の方法でもajaxで送受信しているのなら同様ですが・・・)
データを受け取ってからhtmlに出力(表示)していると思いますが、その中で表示する対象を別フレームに変えてあげる必要があります。
別フレーム内のdocumentは、スクリプトがあるdocumentとは別物なので、そちらのDOMに表示するようにスクリプトを変えてあげればよろしいかと思います。
イメージ的には
(別フレームのdocument).(通常のDOM処理メソッド等~~)
のような形式になります。
スクリプトの記述方法によっては、一番トップの要素の取得部分だけを変えてあげれば、それだけでOKということになるかも知れません。
具体的な方法としては
http://www.bing.com/search?q=javascript+%E5%88%A …
※フレームがそれぞれ別ドメインの場合は、さらなる工夫が必要になります。
(クロスドメインの禁止があるので)
No.2
- 回答日時:
405エラーだと別問題ですね。
http://www.pdf-nosave.com/faq/iis_post/
http://qa.atmarkit.co.jp/q/1445
このあたりが参考になるかと思うのですが・・・
No.1
- 回答日時:
resultに表示したいのですかね?
・別ウインドウに表示
<form id="searchForm" target="_blank">
・フレームに表示
<form id="searchForm" target="フレームのname">
例)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>検索サイト</title>
</head>
<body>
<div id="header">
<form id="searchForm" target="resultFrame">
<input id="searchQuery" type="text" name="query" size="30"/>
<input id="searchButton" type="submit" value="検索"/>
<input id="searchStart" type="hidden" name="start" value="0"/>
<input id="searchNum" type="hidden" name="num" value="20"/>
</form>
</div>
<div id="subheader"></div>
<div id="result">
<iframe name="resultFrame"><iframe>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9. …
<script type="text/javascript" src="fess.js"></script>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
createElementで作成した要素を...
-
関数の引数を動的に変えたい
-
VideoBoxのカスタマイズ
-
iframe内のリンクが飛ばないの...
-
getElementByIdの戻り値がnull...
-
テキストエリア内の一部の文字...
-
背景色を透明化
-
新しいウィンドーでJavascript...
-
console.log結果をhtmlで表示し...
-
JAVAスクリプトについて
-
初歩的なソースで質問です
-
クリックで色変更後に既に変更...
-
前回の質問の続き function mov...
-
表示・非表示のスクリプトで、...
-
セレクタの指定について質問です
-
前回の質問の続き function mou...
-
それぞれにオンマウス動作
-
要素を指定の場所に追加
-
フラッシュの様に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
前回の質問の続き function mov...
-
前回の質問の続き function mou...
-
読み込んだQRコードをフォーム...
-
javascriptテキストBOX色を元に...
-
背景色を透明化
-
iframe内のリンクが飛ばないの...
-
createElementで作成した要素を...
-
IFRAMEの表示/非表示を切り替え...
-
removeEventListenerについて
-
クリックで色変更後に既に変更...
-
removeAttribute()メソッドで削...
-
console.log結果をhtmlで表示し...
-
javascriptでオブジェクトの重...
-
タブで開いてさらにタブ内をア...
-
jQueryで特定id以外の下にある...
-
指定したパスが現URLに含まれて...
-
折りたたみ部分にアンカーでリ...
-
前回の質問の続き
-
jQueryのアコーディオンメニュ...
おすすめ情報
質問がわかりにくくてすみません。
下のようにフレームを3つに分けたhtmlファイル
<html>
<frameset rows="28%,*">
<frame name="main">
<frameset cols="18%,*">
<frame name="frame1">
<frame name="frame2">
</frameset>
</html>
┌───────────────────┐
│ main │
│───────────────────│
│ │ │
│ frame1 │ │
│ │ │
└───────────────────┘
のmainフレームに検索フォームを作成し、
その検索結果をframe1に出力したいのです。
mainに表示する検索フォームは上に書いたhtmlファイルで表示しているのですが、
検索処理はjavascriptで行っています。
http://fess.codelibs.org/ja/articles/article-4.h …のjsファイルを参考に作成しています。
こちらのjsファイルに
f.target="frame1"等を追記しても、fram1に
「405 - このページへのアクセスに使用された HTTP 動詞は許可されていません。」
と表示されてしまいます。
mainに表示するhtmlファイルではいくつかの検索フォーム(aspファイル)があり、
<base target="frame1">の記入もしてあります。
他のフォームは正しくframe1に表示されます。
HTMLが置いてあるサーバーとFessサーバーは同ドメインですので、JSONPは利用していません。
リクエストパラメータにcallbackは利用していません。
また、フレームも同ドメインであるため、クロスドメインにはひっかかりません。
お恥ずかしながら、ご回答頂いた内容がいまいち理解できておらず、
どのスクリプトに何を追記すべきかがわかりません。
jsファイルに(別フレームのdocument).(通常のDOM処理メソッド等~~)にあたる追記をすれば宜しいのでしょうか?
jsファイルの中身を見落としていました
var $result = $('#result'),
buf = [];
//検索結果領域クリア
$result.empty();
//検索結果出力
var $resultBody = $("<ol/>");
var results = dataResponse.result;
for(i = 0, max = results.length; i < max; i++) {
buf = [];
buf.push('<li>**略**</li>');
$(buf.join("")).appendTo($resultBody);
$resultBody.appendTo($result);
の$resultを置き換えれば良いでしょうか?