2011-11-14 10 views
2

私はjQuery Mobileで遊んでいて、いくつか(私にとって)奇妙な動作に遭遇しました。jQuery Mobile:URLクエリ文字列が変更されない

は、私は、各同じjQMページ、#otherpageを指すリンクの束を持っているが、その上の異なる#otherpage?q=foo#otherpage?q=barのようなURLのクエリ文字列の値、および持ちます。他のページへの変更はうまくいきますが、クエリ文字列はクリック間でスティックされるので、最初に#otherpage?q=fooへのリンクをクリックして最初のページに戻ると、その後のすべてのページの変更は#otherpageになります。クリックされたリンクのhrefは言う。

jsFiddleはので、私はここに例を置くjQMためのサポートを持っていないようでした:http://cpak.se/dump/location-search-test.html

私はMac上でChromeとSafariでこれを試してみました。

ページ間の単純なデータを渡すためにクエリ文字列を使用しています。これは、以前のコードが何をしているかを多少認識している他のコードがページ変更イベントにフックしているためです。私はこの作業を得ることができない場合、私はデータを渡す別の方法を見つける必要があります...:P

乾杯!

/Christofer

+0

これは古い問題ですが、まだ問題がある場合は、最近[プラグイン](https://github.com/CameronAskew/jquery.mobile.paramsHandler)を作成しました。 –

答えて

3

私は実際に少し奇妙なので、この問題を参照しました。これについての未解決の問題があります:https://github.com/jquery/jquery-mobile/issues/2859

気圧のjQuery Mobileは、クエリパラメータを使用することはお勧めしません:

これは何かですが、私たちは現在、ハッシュ フラグメントの一部として、クエリパラメータをサポートしていません。それは頻繁に内部で と議論されており、機能要求リストに載っています。彼らは次のようにプラグインを使用することをお勧め

しかし、DOMでのアクティブなページのデータのURLがないので、回避策があります変更すると、$(".ui-page-active").attr("data-url");でこれを取得できます。これをあなたのウェブサイトでテストしたところ、3つのユニークなURLがすべて見つかりました

+0

私のためにそれを掘る時間を取ってくれてありがとう!私は "data-url"を試してみます。 – cpak

0

のjQuery Mobileは、デフォルトで内部的にリンクされたページへのクエリ文字列パラメータを渡すことはできません。チェックアウトこのドキュメントページ(ページの下から2番目の箇条書き)の一番下に:http://jquerymobile.com/demos/1.0rc3/docs/pages/page-navmodel.html

のjQuery Mobileは 内部/埋め込まれたページに渡すクエリパラメータをサポートしていませんが、あなた2つのプラグインがありますこの機能をサポートするプロジェクトを に追加できます。軽量のpage params pluginがあり、backbone.jsまたはspine.jsで使用するより完全な機能を備えたjQuery Mobile router pluginがあります。

+0

ああ、私はその部分を見逃していました。ありがとう! – cpak

4

jQmを無効にすると、ブラウザでURLパラメータを正しく更新するための最も簡単な解決策と思われます。例えば。リンクアンカーにdata-ajax="false"を追加し、$.mobile.changePageを使用しないでください。

<a href="#page?id=1" data-ajax="false"> 

動的アプリケーションでは、事前にhrefの値を変更してください。