質問: "http://PHPの処理?param=".localStorage.getItem( 'key' ); location.href=url; EOM; ?> ``` 上記の例でいうと、このようなカタチで `localStorage.getItem( 'key' )` の値をPHPの処理まで持ってこれれば、Storageの値をPHPでも使えるのかなと思ったしだいです。(が、できませんでした。) ちなみに、PHPの中にこのようにJSの処理を書かないといけない理由は、URLとしてリンクを踏んだ時に上記記載の一連の処理を行いたいからです。 よろしくお願いいたします。
回答: javascriptの文法上のミスがあります。 ``` var url = "http://PHPの処理?param=".localStorage.getItem( 'key' ); ↓ var url = "http://PHPの処理?param="+localStorage.getItem( 'key' ); ``` 文字列連結は「+」 ですね。 私もPHPをよくやっているのでよく混同して同じ間違いをしてしまいます。 そこを修正して実行したところ、きちんと`key`は渡されていました。 (修正前はそもそもjavascriptのエラーがあって処理が中断しています) ※ただしローカル環境で同じドメイン同士のやりとりなので成功したものの参考にはなるかというと微妙かもしれません もしその部分を修正しても現象が改善されないのであれば、 ちょっとうろ覚えで申し訳ないのですが、確かlocalstorageの保存は非同期だという記述をどこかで見た覚えがあります。 つまり保存直後に利用する場合、実はまだlocalstorageには保存されていなくて、 参照しようにもnullであるケースもあるということです。 回避するために工夫が必要そうです。 localstorageに値が保存されている確認はブラウザの開発ツールでできますので、まずは保存されているかどうかの確認をしてください。 あとは上手くいくか分かりませんが、setItemは今のままでgetItemをwindow.onloadのタイミングにして、setとgetのタイミングをずらしてみてはいかがでしょうか? 追記 === 質問本文見返して気づきました。 別のドメインで保持されたlocalstorageの値は利用できません。 > > localStorageは便利な機能だが、シングルドメインに限定されている。違うドメインのデータを保持することはできない。 > > > ただ、上記の記事のようにクロスドメインでのデータのやり取りの方法も書いてあるので参考にしてみてください。