- ベストアンサー
javascriptでクエリ文字列を取得できますか?
javascriptでURLの末尾に付与した?以降の文字列、いわゆる"クエリ文字列"を取得する事は出来ますか? 出来る場合、構文を教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
クエリだけ取り出すのは知りませんが、URLから切り出せばいいと思います。 function getQuery() { url = new String(window.location); query = new Array(); query = url.split("?"); if ( !!query[1] ) { return query[1]; } else { return ""; } return query; } こんな感じかな。
その他の回答 (1)
>if ( !!query[1] ) > >とありますが、!!とはどういう意味ですか? > >if (query[1] != "") > >と同じ意味ですか? 例えば、query[0]しか存在しない状態で if (query[1] != "") などとすると、エラーになります。 これは、存在しないquery[1]を参照しようとしたためです。 そこで、query[1]が存在するかしないか確認する必要があるため、 if (!query[1]) というように「!」付けて、query[1]の存在を否定した文にします。 つまり、これだと「もしquery[1]が存在しなければ」というif文になります。 なので、先の文は if ( !query[1] ) { return ""; } else { return query[1]; } でもよいわけです。 ただ、私の場合「もしquery[1]が存在すれば」というif文したかったのでので、さらにif文の内容を逆転させるために「!」を2つつけて「!!」にしたわけです。 if ( !!query[1] ) は、「もしquery[1]が存在すれば」というif文になります。 実際に、 if ( !!query[1] ) で始まるif文をなくして、単に return query[1]; としてテストしてみて下さい。 クエリを付けた場合は問題ないですが、クエリがない状態で実行させると、エラーになるはずです。
お礼
重ね重ねなるほどです。 簡潔で、他のパターンにも応用できそうです。 ありがとうございました。
補足
なるほどです。それでやって見ます。 ところで、申し訳ないのですが更に質問させて下さい。 教えて頂いたソースの5行目に if ( !!query[1] ) とありますが、!!とはどういう意味ですか? if (query[1] != "") と同じ意味ですか?