1

ブラウザから URL パラメータを取得しようとしています。

ブラウザには次のような URL があります

http://localhost/red/prepareslide.php?p=trng&s=1

しかし、私はパラメータを取得したいです。つまり、すべてのパラメータを取得したいのです(疑問符) "?"

出力は次のようになりますp=trng&s=1 。どうすればこれを行うことができますか?

ここに私のコードがあります:

<!DOCTYPE html>
<html>
</head>
<script>
function call(){
URL = window.location.toString();

var query = URL.match(/\?/);
alert(query);
var queryList = query.split("?");
for (var i=0; i<queryList.length; i++) 
{
var element = queryList[i].split("=");
var ex=document.write(element[0] + " = " + unescape(element[1]) + "\r\n");
alert(ex);
}
}
</script>



</head>
<body>

<a href="#" onclick="call();">click</a>
</body>
</html>
4

5 に答える 5

2

edit : some1 から、私のスニペットに欠陥が含まれていることが通知されました。彼は正しい。URL に疑問符がない場合、結果は完全な URL になります。

疑問符の後の文字を取得することを目指しているので、これでうまくいくはずです。

// obtain browser url
var currUrl = document.URL;
// split string to obtain substring
var index; var str;
if((index = currUrl.indexOf("?")) > 0) str = currUrl.substring(index + 1);

しかし、これは確かに速くなる可能性があります。以下のコメントのように、

// obtain browser url
var currUrl = document.URL;
// replace the string that only after ? returns as results
var str = currUrl.replace(/^[^?]*\?/, '');
// check result
if(str != '') {
    // do your task here with the result 
}

これが有用な返信である場合に信用を与えたい場合は、ElLocoCocoLoco (彼の発言について) および/または交換トリックについて Ruslan Bes にそれを与えてください。(でも正しいです)。

于 2013-07-23T12:02:46.720 に答える
1

あなたはできる;

document.location.search.replace(/\??([^&=]+)=([^&=]*)/g, function(p, k, v) {
    document.write(k + " = " + decodeURIComponent(v) + "</ br>");
})
于 2013-07-23T12:37:28.327 に答える
0

RE /\?/は?のみを返します。/\?\S+/を使用する と、 ?p=trng&s=1が得られ、それに応じて split() を使用します。結果で。

于 2013-07-23T12:16:09.927 に答える
0

params 部分のみが必要な場合は、次のように試すことができます。

var urlParams = window.location.href.split('?')[1] ;
于 2013-07-23T12:10:05.137 に答える
0

これを行う正しい完全な方法は次のとおりです。

    var url = window.location.href;

    var endChar = url.indexOf('#');
    if(endChar==-1)
    {
        endChar = url.length;
    }
    var queryChar = url.indexOf('?');

    var queryPart="";
    if(queryChar!=-1)
    {
        queryPart = url.slice(url.indexOf('?') + 1,endChar);  
    }
于 2013-07-23T12:15:08.630 に答える