jQueryはIEにおいてGETを受け取れない?


GETの意味を履き違えていたらごめんなさい。
つまり具体的に言うと
例えば、
<h3><a href="hoge.htm?uid=1">page1 動作1</a></h3>
<h3><a href="hoge.htm?uid=2">page1 動作2</a></h3>
というリンクがあったとして、hoge1.htmではアコーディオン表示のjQueryプラグインを使っており、uid=1の時は項目1を展開した状態で、uid=2の時は項目2を展開した状態で、表示させたいのです。(?以降が無いときはuid=1と同じ動作)
そこで、(location.href)を使って取得しようと考えたのですが、IEではリンク先を表示したときに?を含む以降が省略されてURLを表示してしまい、うまく取得できないようです。
(FireFoxでは、?以降のURL表示がされており問題なく想定どおりの動作をしていました)

考え方が間違っているのか、そもそもIEでjQuery(javascript全般含む)がGET(URLの?以降)を受け取ることができないのでしょうか?
稚拙ではありますが、参考までに自身で作った受取側のソースを自前のテストサーバーに貼っております。
(そもそもこれはGETではなく、単純にURLの?以降を読み取っているに過ぎないとは思いますが・・・)

http://tw2.ryu-net.info/test.js.txt

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/06/28 13:42:51
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:holoholobird No.2

回答回数574ベストアンサー獲得回数104

ポイント250pt

>jQueryはIEにおいてGETを受け取れない?
そんなことはありません。IRでもGETは受け取れます。
GETを取得するときには、window.location.searchを使いましょう。
http://phpjavascriptroom.com/?t=js&p=location4

取得後の文字列を&や=で区切ることにより、該当するパラメータを手に入れられます。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split

id:ryuvay

なるほど、この場合location.hrefより、location.searchが正しい使い方であること、勉強になりました。
ありがとうございます。

2013/06/28 13:42:01

その他の回答1件)

id:dawakaki No.1

回答回数797ベストアンサー獲得回数122

ポイント50pt

IEでもGETパラメータは取得できます。
? でsplitしているのがおかしいように思います。
下記サイトのソースを参考にしてみて下さい。
http://blog.digital-assist.net/?p=110

id:ryuvay

参照サイトではindex()を使っていますが、今回パラメータはひとつしかないのため「?」でsplitでも問題ないです。

で、申し訳なかったのですが、原因はまったく別のところにあって

page1 動作1


page1 動作2


というように試行錯誤していた時の「#」が挟まっていてIEでは#以降は全く別の扱いになってしまうようで、それが原因でした。
お騒がせしてすみません。 2013/06/28 13:38:55
id:holoholobird No.2

回答回数574ベストアンサー獲得回数104ここでベストアンサー

ポイント250pt

>jQueryはIEにおいてGETを受け取れない?
そんなことはありません。IRでもGETは受け取れます。
GETを取得するときには、window.location.searchを使いましょう。
http://phpjavascriptroom.com/?t=js&p=location4

取得後の文字列を&や=で区切ることにより、該当するパラメータを手に入れられます。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split

id:ryuvay

なるほど、この場合location.hrefより、location.searchが正しい使い方であること、勉強になりました。
ありがとうございます。

2013/06/28 13:42:01
  • id:Lhankor_Mhy
    間違ってないように思えますね。これで動作するはず。
    途中でalert(location.href)とすると、どのように表示されますか?
     
    ちなみに回答者の2人はweb系の有料質問で誤答が多い方たちです。
  • id:a-kuma3
    コードは問題なさそうですもんね。

    ぼくからも、いくつか。
    期待通りに動いてくれない IE というのは、IE10 とか IE9 ですか?
    もし、IE9 or IE10 を使ってるなら、互換モードで表示すると、どうなりますか?
    互換モードへの切り替え方は、こちらなんぞを。
    http://www.atmarkit.co.jp/ait/articles/1304/12/news095.html

    試しているときは、Webサーバを通してますか?
    それとも、ローカルのファイルをブラウザで見てたりしますか?
    (URL のプロトコルが、http: なのか file: なのか、ということ)
  • id:ryuvay
    すみません、お騒がせしました。
    原因がわかりましたので、いちおうここにも書いておきます。
    実は、試行錯誤していたときの残りカスである#が残っていました。
    この#はページ移動したときのページ内での頭出しとでもいいましょうか、それで使っていたものなのですが、それがリンクURLに残ってまして
    href="hoge.htm#2?2"
    となっていました。
    FireFoxでは、ページ移動後のブラウザの窓の上部にある現URLは、#以降も表示されていたのですが、IEでは#以降が全て省略されてしまっていました。
    hrefの#を外したところ、IEでも問題なく?以降を取得できた上にURL表示も想定どおりになされていました。
    #を使うときは、GETパラメータの後ろ、一番最後に付けないとダメなんですね・・・・。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません