2つのjQueryMobileページ間でusernameのような変数を渡すにはどうすればよいですか?
または、そのことについては2つの通常のページで、変数をグローバルとして持つことは機能しません。次のインクルードで変数がnullに戻されるためです。
2つのHTMLページ間で変数をグローバル変数に渡すにはどうすればよいですか?
2つのjQueryMobileページ間でusernameのような変数を渡すにはどうすればよいですか?
または、そのことについては2つの通常のページで、変数をグローバルとして持つことは機能しません。次のインクルードで変数がnullに戻されるためです。
2つのHTMLページ間で変数をグローバル変数に渡すにはどうすればよいですか?
私は通常ローカルストレージを使用しますが、オブジェクトも保存できます。元:
var userInfo = {
"username": "Bob",
"roleName": "Admin",
"image": "img/userPic.jpg",
};
//Store the object in local storage
localStorage.setItem('loggedUser', JSON.stringify(userInfo));
次に、他のページで簡単に行うことができます。
var userInfo = JSON.parse(localStorage.getItem("loggedUser"));
var userName = userInfo.username;
2つのページ間のハイパーリンクでajaxを無効にしている限り、クエリ文字列で渡すことができます。
<a href="nextPage.php?username=joe" data-ajax="false">Next page</a>
jQueryモバイルトランジションの有益な機能を見逃していますが、少なくともページ間で変数を正常に渡すことができます。
アップデート:
ドキュメントから:
ページ間でのパラメータの受け渡し:
jQuery Mobileは、内部/埋め込みページへのクエリパラメータの受け渡しをサポートしていません。
その後、ドキュメントは私が試したことのない2つのプラグインを提案します。ページパラメータプラグインとjqueryモバイルルーティングプラグイン。
パラメータの受け渡しが機能しない理由については、上記のリンク先のドキュメントページを確認してください。ただし、ハッシュなしでページを読み込む場合(ajaxの動作を無効にすることにより)、少なくとも私の経験では問題ありません。
クエリ文字列またはクライアント側ルーティングを介してURLを使用するか、localStorageを使用するか(同じドメイン上にあると想定)、Cookieを使用できます。
クライアント側のルーティングを使用する場合は、さまざまなJQMページイベントと連携するJQM専用のプラグインがあります。
JQMが独自の構成を保存するのと同じ方法で、グローバルに使用する変数を保存できます。$.mobileの下の'mobileinit'に独自のjavascriptオブジェクトを作成し、それをグローバル変数に使用するだけです。
<!DOCTYPE html>
<html>
<head>
...
<script> // position before jquery.mobile.js is important for 'mobileinit' to fire
$( document ).on( "mobileinit", function( event ) {
//create global variable storage
$.mobile.YourApplicationNameHere = {};
//use it like this anywhere in your code:
$.mobile.YourApplicationNameHere.globalVar1 = 1;
$.mobile.YourApplicationNameHere.globalVar2 = 2;
console.log("globalVar1 = " + $.mobile.YourApplicationNameHere.globalVar1);
});
</script>
<script src="jquery/jquery.mobile-1.4.5.min.js"></script>
...
</head>
...
</html>
グローバル変数はどこでも初期化できますが、「mobileinit」はJQMの最も初期の初期化ポイントです。