ページ間でフォームに入力した文字の受け渡しをしたい.
ゲスト
ゲスト
ATOMRSS
  • コード求むID: 124
  • 登録日時:  2007/09/17 17:57
  • 最終更新日時: 2007/09/22 22:47
  • アクセス数: 1847
  • タグ:  javascript
  • codeなにがしブックマークに追加する 0 users
  • このページを del.icio.us に追加
  • このページをはてなブックマークに追加

 Google 
  http://www.google.co.jp/
 Yahoo
  http://search.yahoo.co.jp/
 の検索ページで、何か文字を入力して、
 フォームの上の(タブと言ったらいいのでしょうか)「画像」など
 リンクをクリックすると、入力した文字がクリックした検索ページの入力
 ボックスに渡されます(例えば、画像をクリックすると、画像検索ページ
 に入力した文字が渡される)。

 これと同じ物を作りたいのですが、どなたか仕組みが分かる方がおられ
ましたら教えていただけないでしょうか?

 ブラウザの設定でjavascriptを無効にしてみると、
 今度はGoogleもYahooも文字を渡すことが出来なかったので、
 たぶん、javascriptが使われているのではないかなと思います。

 それと、特に分からないのが、ページのリンクの仕方です。
例えば、Googleのトップページから画像検索ページに行きたいと思って、入力ボックスの上の「画像」リンクをクリックすると、urlは、
http://images.google.co.jp/imghp?hl=ja&oe=UTF-8&q=&tab=wi
Yahooで同じようにすると、urlは、
http://search.yahoo.co.jp/images?ei=UTF-8&p=
となり、どちらもurlの中に「?」があります。
つまり、ページの切り替えにCGIか何か使ってhtmlを出力しているのでしょうか?

 初心者なもので、初歩的な質問ですいませんが、
 分かる方がおられましたら教えていただけないでしょうか?
どうか、よろしくお願いいたします!

コメント

以下のURLにアクセスすると検索欄に「ほげ」が表示されるかと思います。
http://images.google.co.jp/imghp?hl=ja&oe=UTF-8&q=&tab=wi&q=ほげ


Googleのやっていること:

Googleのトップページはq(おそらくqueryの頭文字)で
渡された文字列をテキストボックスに表示したHTMLを返すという
サーバ側のロジックが組まれているようです。
(ソースを見た所、INPUTタグのVALUE句に値が指定されていた為、
JavaScriptによる制御ではなく、サーバ側でのHTML動的生成)

また、難読化されているため多少読みづらいですが、「画像」等のタブを
クリックした場合には、検索ボックスに入力されている値を用いて
タブに張られているリンクのhref要素を差し替えています。


作り方:
1.「渡された文字列を検索ボックスに表示したHTMLを動的生成する」
サーバ側ロジックを作成する

2.クライアント側でタブがクリックされたときに、
Formのsubmitを使用したり(これならばJavaScript無効でもOK)、
Googleの用にJavaScriptを用いてクエリ文字列を差し替えるなどして、
サーバ側に新しい文字列を通知する。


新しい文字列を通知すれば、後はサーバ側ロジックが検索ボックスに
入ったHTMLを生成してくれるので、期待した動作になるかと思います。

  • GoodJob
  • 0

  • ゲスト
  • 2:ゲスト
  • 2007/09/19 19:04

外してたらすいません。

質問の内容からするとQueryString(というよりHTTPリクエストかな?)の意味が
良くわかっていないように感じられますが・・・

QueryStringはURLの後に?と&で区切られて付加される引数のようなものです。

検索エンジンなどは、内容も複雑だったり暗号化されていたりするので
お手本にするにはちょっと難し過ぎると思われます。
入門HPが多数ありますのでそちらを参考にしたほうがよろしいかと^^;

PHP+JavaScriptですが、一応サンプルを

URL:http://ServerName/test.php?InputName=hogehoge
HTML:
<HTML>
<BODY>
<FORM name="myform" action="test.php" method="post">
<INPUT type="text" name="InputName" />
<INPUT type="submit" />
</FORM>
<Script Type="Text/JavaScript">
    myform.InputName.value="<?php echo $_REQUEST["InputName"] ?>";
</Script>
</BODY>
</HTML>

submitでInputNameの内容が送信されて渡るのと"?InputName=~"で値が
渡されるのとが同じ意味を持つことが重要です。

GJGJ

  • ゲスト
  • 3:ゲスト
  • 2007/09/22 22:44

sheilさん、ゲストさん、教えて頂きありがとうございます。

sheilさんが教えてくださったように、
クライアント側でタブがクリックされたときに、 
Googleの用にJavaScriptを用いてクエリ文字列を差し替えるなどして、 
サーバ側に新しい文字列を通知するようにし、
そして、ゲストさんの書いてくださったソースを組み合わせれば、
出来ると思います。
詳しくいろいろ教えて頂き本当にありがとうございました!

  • GoodJob
  • 0

  • ゲスト
  • 4:ゲスト
  • 2007/09/22 22:47

すいません、先程書き込ませていただいた者です。
sheileさんの最後の「e」が抜けていました。
大変失礼しました。すいません。

  • GoodJob
  • 0

前へ 1 次へ

コメントする

[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。

[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。

ゲスト投稿者:ゲスト:

関連ソースコード・ノウハウを登録

PDFLib | A library for processing PDF on the fly プレゼン公開・共有サイト handsOut.jp オープンタイプ株式会社 チーム・マイナス6% - みんなで止めよう温暖化

ブックマークコメント