get GET query from javascript

0

I have a problem I am trying to get the query of a current url from javascript but it gives me a problem.

Result that answers is:
/pinturas?**0**=27&1=1&demo=1&sort_by=price-descending

Url requested:
localhost/category/pinturas?page=27&demo=1

At the beginning of the query pinturas?0=27 at zero should go page

JAVASCRIPT

$('select[class="form-control js-sort-by"]').change(function(){
    var vars = [], hash;
    var q = document.URL.split('?')[1];

    if(q != undefined){
        q = q.split('&');
        for(var i = 0; i < q.length; i++){
            hash = q[i].split('=');
            vars.push(hash[1]);
            vars[hash[0]] = hash[1];
        }
    }

    var params = vars;
    params['sort_by'] = $(this).val();
    var sort_params_array = [];

    for (var key in params) {
        if ($.inArray(key,['page'])==-1) {
            sort_params_array.push(key + '=' + params[key]);
        }
    }

    var sort_params = sort_params_array.join('&');
    alert(window.location.pathname + '?' + sort_params);
});

HTML

<label for="sort-by">Ordenar por: </label>
<select class="form-control js-sort-by" id="sort-by">
    <option value="price-ascending">Precio: Menor a Mayor</option>
    <option value="price-descending">Precio: Mayor a Menor</option>
    <option value="alpha-ascending">A - Z</option>
    <option value="alpha-descending">Z - A</option>
    <option value="created-descending">Más Nuevo al más Viejo</option>
    <option value="created-ascending">Más Viejo al más Nuevo</option>
    <option value="best-selling">Más Vendidos</option>
</select>
    
asked by lujiweka 11.12.2018 в 17:35
source

1 answer

0

you can do it like this:

function getParams(u,k){
	var p={};
	u.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v})
	return k?p[k]:p;
}

var url = "http://localhost/category/?page=27&demo=1";

var pl = getParams(location.search)
var pu = getParams(url);
var pp = getParams(url,"page")
var pd = getParams(url,"demo")

console.log(pl);
console.log(pu);
console.log(pp);
console.log(pd);
    
answered by 11.12.2018 в 18:16