9 ответов:
JQuery jQuery-URL-Parser плагин делает ту же работу, например, чтобы получить значение поиск строка запроса param, вы можете использовать$.url().param('search');эта библиотека не поддерживается. Как предложил автор того же плагина, вы можете использовать URI.js.
или вы можете использовать в JS-URL-адрес вместо. Его похож на тот, что ниже.
Так что вы можете получить доступ к параметр запроса, как
$.url('?search')
зачем расширять jQuery? Что было бы полезно расширить jQuery против просто наличия глобальной функции?
function qs(key) { key = key.replace(/[*+?^$.\[\]{}()|\\/]/g, "\$&"); // escape RegEx meta chars var match = location.search.match(new RegExp("[?&]"+key+"=([^&]+)(&|$)")); return match && decodeURIComponent(match[1].replace(/\+/g, " ")); }http://jsfiddle.net/gilly3/sgxcL/
альтернативным подходом было бы проанализировать всю строку запроса и сохранить значения в объекте для последующего использования. Этот подход не требует регулярного выражения и расширяет .
Это не мой пример кода, но я использовал его в прошлом.
//First Add this to extend jQuery $.extend({ getUrlVars: function(){ var vars = [], hash; var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; }, getUrlVar: function(name){ return $.getUrlVars()[name]; } }); //Second call with this: // Get object of URL parameters var allVars = $.getUrlVars(); // Getting URL var by its name var byName = $.getUrlVar('name');
нашел этот камень от наших друзей в SitePoint. https://www.sitepoint.com/url-parameters-jquery/.
используя чистый jQuery. Я просто использовал это, и это сработало. Подправил его немного например саке.
//URL is http://www.example.com/mypage?ref=registration&[email protected] $.urlParam = function (name) { var results = new RegExp('[\?&]' + name + '=([^&#]*)') .exec(window.location.search); return (results !== null) ? results[1] || 0 : false; } console.log($.urlParam('ref')); //registration console.log($.urlParam('email')); //[email protected]Используйте как хотите.
Я написал маленькую функцию, где вам нужно только разобрать имя параметра запроса. Так что если у вас есть: ?Project=12 & Mode=200&date=2013-05-27 и вы хотите параметр 'Mode' вам нужно только разобрать имя 'Mode' в функцию:
function getParameterByName( name ){ var regexS = "[\?&]"+name+"=([^&#]*)", regex = new RegExp( regexS ), results = regex.exec( window.location.search ); if( results == null ){ return ""; } else{ return decodeURIComponent(results[1].replace(/\+/g, " ")); } } // example caller: var result = getParameterByName('Mode');
после многих лет уродливого разбора строк, есть лучший способ:URLSearchParams давайте посмотрим, как мы можем использовать этот новый API, чтобы получить значения из местоположения!
// при условии "?post=1234 & action=edit"
var urlParams = new URLSearchParams(window.location.search); console.log(urlParams.has('post')); // true console.log(urlParams.get('action')); // "edit" console.log(urlParams.getAll('action')); // ["edit"] console.log(urlParams.toString()); // "?post=1234&action=edit" console.log(urlParams.append('active', '1')); // "? post=1234&action=edit&active=1"обновление: IE не поддерживается
используйте эту функцию вместо URLSearchParams
$.urlParam = function (name) { var results = new RegExp('[\?&]' + name + '=([^&#]*)') .exec(window.location.href); if (results == null) { return 0; } return results[1] || 0; } console.log($.urlParam('action')); //edit
основываясь на ответе @Rob Neild выше, вот чистая адаптация JS, которая возвращает простой объект декодированных параметров строки запроса (нет %20 и т. д.).
function parseQueryString () { var parsedParameters = {}, uriParameters = location.search.substr(1).split('&'); for (var i = 0; i < uriParameters.length; i++) { var parameter = uriParameters[i].split('='); parsedParameters[parameter[0]] = decodeURIComponent(parameter[1]); } return parsedParameters; }
написано на ванильном Javascript
//Get URL var loc = window.location.href; console.log(loc); var index = loc.indexOf("?"); console.log(loc.substr(index+1)); var splitted = loc.substr(index+1).split('&'); console.log(splitted); var paramObj = []; for(var i=0;i<splitted.length;i++){ var params = splitted[i].split('='); var key = params[0]; var value = params[1]; var obj = { [key] : value }; paramObj.push(obj); } console.log(paramObj); //Loop through paramObj to get all the params in query string.
function parseQueryString(queryString) { if (!queryString) { return false; } let queries = queryString.split("&"), params = {}, temp; for (let i = 0, l = queries.length; i < l; i++) { temp = queries[i].split('='); if (temp[1] !== '') { params[temp[0]] = temp[1]; } } return params; }Я использую это.
Comments