JavaScript获取url段和参数

时间:2016-02-28 07:27:54

标签: javascript url

我已经阅读了一些问题,但我仍然无法弄清楚如何做到这一点 我有一个网址example.com/event/14aD9Uxp?p=10

我希望得到14aD9Uxp和p
的值 我尝试使用split('/'+'?p='),但它没有工作 我想使用正则表达式,但我真的不明白如何使用它

5 个答案:

答案 0 :(得分:6)

var URL='example.com/event/14aD9Uxp?p=10';

var arr=URL.split('/');//arr[0]='example.com'
                       //arr[1]='event'
                       //arr[2]='14aD9Uxp?p=10'

var parameter=arr[arr.length-1].split('?');//parameter[0]='14aD9Uxp'
                                           //parameter[1]='p=10'

var p_value=parameter[1].split('=')[1];//p_value='10';

答案 1 :(得分:1)

我创建了一个广义函数(在某些方面受到限制),它将返回给定参数的GET值。但是,只有在您不重写URL或修改URL GET SYNTAX时,此功能才能正常工作。

对不起,这可能有点大修。但是这些天我一直渴望写出一些好的代码。

//Suppose this is your URL "example.com/event/14aD9Uxp?p=10";
            function GET(variable) {
                var str = window.location.href;


                str = str.split("/");
                // str = [example.com, event, 14aD9Uxp?p=10]


                //Get last item from array because this is usually where the GET parameter is located, then split with "?"
                str = str[str.length - 1].split("?");
                // str[str.length - 1] = "14aD9Uxp?p=10"
                // str[str.length - 1].split("?") = [14aD9Uxp, p=10]

                // If there is more than 1 GET parameter, they usually connected with Ampersand symbol (&). Assuming there is more, we need to split this into another array

                str = str[1].split("&");
                // Suppose this is your URL: example.com/event/14aD9Uxp?p=10&q=112&r=119
                // str = [p=10, q=112, r=119]
                // If there is only 1 GET parameter, this split() function will not "split" anything

                //Remember, there might only be 1 GET Parameter, so lets check length of the array to be sure.
                if (str.length > 1) {

                    // This is the case where there is more than 1 parameter, so we loop over the array and filter out the variable requested
                    for (var i = 0; i < str.length; i++) {

                        // For each "p=10" etc. split the equal sign 
                        var param_full_str = str[i].split("=");
                        // param_full_str = [p, 10]

                        //Check if the first item in the array (your GET parameter) is equal to the parameter requested
                        if (param_full_str[0] == variable) {
                            // If it is equal, return the second item in the array, your GET parameter VALUE
                            return param_full_str[1];
                        }
                    }
                } else {
                    // This is the case where there is ONLY 1 GET parameter. First convert it to a String Type because Javascript decided that str was no longer a String
                    // Now split it with the equal sign.
                    str = str.toString().split("=");
                    return str[1];
                }
            }
            document.write(GET("p"));

答案 2 :(得分:0)

简单的无正则表达方式

var s = "example.com/event/14aD9Uxp?p=10";
var splitByForwardSlash = s.split('/');

// To get 14aD9Uxp
splitByForwardSlash[splitByForwardSlash.length-1]

// To get p=10
splitByForwardSlash[splitByForwardSlash.length-1].split('?')[1]

我想你知道怎么离开这里: - )

答案 3 :(得分:0)

function $_GET(param) {
    var vars = {};
    window.location.href.replace( 
        /[?&]+([^=&]+)=?([^&]*)?/gi, // regexp
        function( m, key, value ) { // callback
            vars[key] = value !== undefined ? value : '';
        }
    );

    if ( param ) {
        return vars[param] ? vars[param] : null;    
    }
    return vars;
}

我从这里收集了这个: http://www.creativejuiz.fr/blog/javascript/recuperer-parametres-get-url-javascript 它很棒。

要使用它,只需抓住您的参数:

var id = $_GET('id');

答案 4 :(得分:0)

const url = new URL('http://example.com/event/14aD9Uxp?p=10');

const [,, eventId ] = url.pathname.split('/');
const p = url.searchParams.get('p');

浏览器支持:
https://caniuse.com/#feat=url
https://caniuse.com/#feat=urlsearchparams