- コード求むID: 124
- 登録日時: 2007/09/17 17:57
- 最終更新日時: 2007/09/22 22:47
- アクセス数: 1847
- タグ: javascript
これと同じ物を作りたいのですが、どなたか仕組みが分かる方がおられ
ましたら教えていただけないでしょうか?
ブラウザの設定で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を出力しているのでしょうか?
初心者なもので、初歩的な質問ですいませんが、
分かる方がおられましたら教えていただけないでしょうか?
どうか、よろしくお願いいたします!
コメント

- 2:ゲスト
- 2007/09/19 19:04
外してたらすいません。
質問の内容からするとQueryString(というよりHTTPリクエストかな?)の意味が
良くわかっていないように感じられますが・・・
QueryStringはURLの後に?と&で区切られて付加される引数のようなものです。
検索エンジンなどは、内容も複雑だったり暗号化されていたりするので
お手本にするにはちょっと難し過ぎると思われます。
入門HPが多数ありますのでそちらを参考にしたほうがよろしいかと^^;
PHP+JavaScriptですが、一応サンプルを
URL:http://ServerName/test.php?InputName=hogehoge
HTML:
<HTML>
<BODY>
<FORM
<INPUT
<INPUT
</FORM>
<Script
</Script>
</BODY>
</HTML>
submitでInputNameの内容が送信されて渡るのと"?InputName=~"で値が
渡されるのとが同じ意味を持つことが重要です。

- 3:ゲスト
- 2007/09/22 22:44
sheilさん、ゲストさん、教えて頂きありがとうございます。
sheilさんが教えてくださったように、
クライアント側でタブがクリックされたときに、
Googleの用にJavaScriptを用いてクエリ文字列を差し替えるなどして、
サーバ側に新しい文字列を通知するようにし、
そして、ゲストさんの書いてくださったソースを組み合わせれば、
出来ると思います。
詳しくいろいろ教えて頂き本当にありがとうございました!
前へ 1 次へ![]()
コメントする
[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。
[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。








以下の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を生成してくれるので、期待した動作になるかと思います。