2011-08-05 6 views
8

GETパラメータをページURLに追加したいとします。私はこのようなコンテンツをロードしています:ajaxリクエストでURLを変更する

$("#content").load("shop.pl #content .product", $.param({categ:1)})); 

私は同じパラメータ?categ=1を持つようにURLを変更するにはどうすればよいですか?

+0

ないページを変更せずにそれを行うことができることを確認を参照してください。 – Nalum

答えて

11

あなたはこれを達成するためにHTML5 pushState APIを使用することができます。しかし、最新のブラウザだけがそれをサポートしています。IEはまだIE9でサポートしていません。これを事前に行う方法はなかった。しかし、location.hashを使用して、ajaxリクエストによって状態が変更されたページを示すという規則があります。ページの状態を示すためにURLハッシュを使用する方法の詳細については、thisをご覧ください。

プッシュステートへの移行に使用できるライブラリHistory.jsがあります。 APIはpushState APIに非常に近いですが、ブラウザがpushStateをサポートしていない場合、透過的にハッシュフラグメントのフォールバックを提供します。

+1

私と同じアイデアのために+1(私は質問を編集していました!): – andyb

+0

10x私はhistory.jsを試してみます – bliof

+0

pushState APIリンクが壊れています – michaelsnowden

0

pushState()メソッドを使用して表示URLを操作できます(documentationを参照してください。onpopstate eventもお読みください)。

このようにして、希望の方法でURLを変更することができます。

ページのリロードなしにURLを変更する方法についていくつかのデモはここにある:http://html5demos.com/history

3

内容をAJAXを介してロードされているので、おそらくURLは、それが修正さハッシュフラグメントだ持っている必要があります - http://code.google.com/web/ajaxcrawling/docs/specification.html

+2

OPは現在のウェブサイトのGETパラメータを変更したいURLのハッシュ部分、私は信じています。 – Tadeck

+1

はい、これは、HTML5 pushState APIをサポートしていないブラウザーでは不可能です。これは、基本的に最新のブラウザー以外のすべてです。 URLのハッシュフラグメントを操作するのは、ウェブページの変更された状態を示して復元するためのものです。 –

関連する問題