JavaScriptでURLのGETパラメーターを使用する[複製]
-
05-07-2019 - |
質問
この質問にはすでに回答があります:
次のようなページにいる場合
http://somesite.com/somepage.php?param1=asdf
そのページのJavaScriptで、変数をURLのGET部分のパラメーターの値に設定します。
JavaScriptの場合:
<script>
param1var = ... // ... would be replaced with the code to get asdf from URI
</script>
&quot; ...&quot;ありますか
解決
サンプルコード > そのため。
<script>
var param1var = getQueryVariable("param1");
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
alert('Query Variable ' + variable + ' not found');
}
</script>
他のヒント
「検索」を取得できます。ロケーションオブジェクトの一部-そしてそれを解析します。
var matches = /param1=([^&#=]*)/.exec(window.location.search);
var param1 = matches[1];
このgnarfのソリューションのバリエーションを作成したので、呼び出しと結果はPHPに似ています:
function S_GET(id){
var a = new RegExp(id+"=([^&#=]*)");
return decodeURIComponent(a.exec(window.location.search)[1]);
}
ただし、関数で呼び出されるとプロセスが遅くなるため、グローバルとして使用する方が適切です:
window ['
var_name '] = decodeURIComponent(/
var_in_get =([^&amp ;#=] *)/。exec(window.location.search)[1]);
更新
JSをまだ学んでいるので、より多くのJSの振る舞いでより良い答えを作成しました:
Url = {
get get(){
var vars= {};
if(window.location.search.length!==0)
window.location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value){
key=decodeURIComponent(key);
if(typeof vars[key]==="undefined") {vars[key]= decodeURIComponent(value);}
else {vars[key]= [].concat(vars[key], decodeURIComponent(value));}
});
return vars;
}
};
これにより、 Url.get
を使用して呼び出すことができます。
例
url ?param1 = param1Value&amp; param2 = param2Value
次のように呼び出すことができます:
Url.get.param1 //"param1Value"
Url.get.param2 //"param2Value"
こちらはスニペットです:
// URL GET params
url = "?a=2&a=3&b=2&a=4";
Url = {
get get(){
var vars= {};
if(url.length!==0)
url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value){
key=decodeURIComponent(key);
if(typeof vars[key]==="undefined") {vars[key]= decodeURIComponent(value);}
else {vars[key]= [].concat(vars[key], decodeURIComponent(value));}
});
return vars;
}
};
document.querySelector('log').innerHTML = JSON.stringify(Url.get);
<log></log>
プログラミングアーカイブから:
function querystring(key) {
var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
var r=[], m;
while ((m=re.exec(document.location.search)) != null) r[r.length]=m[1];
return r;
}
値が存在しない場合、空の配列が返されます。
値が存在する場合、値が1つの項目を持つ配列が返されます。
名前の付いた値が複数存在する場合、各値を含む配列が返されます。
例:
var param1var = querystring("param1")[0];
document.write(querystring("name"));
if (querystring('id')=='42') alert('We apoligize for the inconvenience.');
if (querystring('button').length>0) alert(querystring('info'));
Coffee Scriptでこれを行う方法は次のとおりです(誰かが興味を持っている場合のみ)。
decodeURIComponent( v.split( "=" )[1] ) if decodeURIComponent( v.split( "=" )[0] ) == name for v in window.location.search.substring( 1 ).split( "&" )
jqueryを使用していますか?以前にこれを使用したことがあります: http://projects.allmarkedup.com/jquery_url_parser/ およびそれかなりうまくいきました。
これは問題ありません:
function gup( name ){
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
これはJSLintが好むバージョンです:
/*jslint browser: true */
var GET = {};
(function (input) {
'use strict';
if (input.length > 1) {
var param = input.slice(1).replace(/\+/g, ' ').split('&'),
plength = param.length,
tmp,
p;
for (p = 0; p < plength; p += 1) {
tmp = param[p].split('=');
GET[decodeURIComponent(tmp[0])] = decodeURIComponent(tmp[1]);
}
}
}(window.location.search));
window.alert(JSON.stringify(GET));
または、1つのキーに対して複数の値のサポートが必要な場合(例: ?key = value1&amp; key = value2これを使用できます:
/*jslint browser: true */
var GET = {};
(function (input) {
'use strict';
if (input.length > 1) {
var params = input.slice(1).replace(/\+/g, ' ').split('&'),
plength = params.length,
tmp,
key,
val,
obj,
p;
for (p = 0; p < plength; p += 1) {
tmp = params[p].split('=');
key = decodeURIComponent(tmp[0]);
val = decodeURIComponent(tmp[1]);
if (GET.hasOwnProperty(key)) {
obj = GET[key];
if (obj.constructor === Array) {
obj.push(val);
} else {
GET[key] = [obj, val];
}
} else {
GET[key] = val;
}
}
}
}(window.location.search));
window.alert(JSON.stringify(GET));
この関数を使用できます
function getParmFromUrl(url, parm) {
var re = new RegExp(".*[?&]" + parm + "=([^&]+)(&|$)");
var match = url.match(re);
return(match ? match[1] : "");
}
すでにphpページを実行している場合
phpビット:
$json = json_encode(すでにphpページを実行している場合
phpビット:
var param1var = getVars.param1var;
jsビット:
<*>
ただし、Htmlページの場合、Jose Basilioのソリューションは良さそうです。
がんばって!
REQUEST, JSON_FORCE_OBJECT);
print "<script>var getVars = $json;</script>";
jsビット:
<*>ただし、Htmlページの場合、Jose Basilioのソリューションは良さそうです。
がんばって!
実際には、特別なことをする必要はありません。 JavaScriptとPHPを組み合わせて、PHPからJavaScriptに直接変数を取得できます。
var param1val = '<?php echo 実際には、特別なことをする必要はありません。 JavaScriptとPHPを組み合わせて、PHPからJavaScriptに直接変数を取得できます。
<*>GET['param1'] ?>';