Jak uzyskać zmienne „GET” z żądania w JavaScript?
Czy jQuery lub YUI! czy ta funkcja jest wbudowana?
javascript
Daniel Silveira
źródło
źródło
Odpowiedzi:
Wszystkie dane są dostępne pod
window.location.search
musisz przeanalizować ciąg, np.
function get(name){ if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search)) return decodeURIComponent(name[1]); }
wystarczy wywołać funkcję z nazwą zmiennej GET jako parametr, np.
get('foo');
ta funkcja zwróci wartość zmiennej lub wartość undefined, jeśli zmienna nie ma wartości lub nie istnieje
źródło
Możesz użyć
jquery.url
, zrobiłem tak:var xyz = jQuery.url.param("param_in_url");
Sprawdź kod źródłowy
Zaktualizowane źródło: https://github.com/allmarkedup/jQuery-URL-Parser
źródło
var xyz = jQuery.url().param("param_in_url");
to poprawna składnia, gdziejQuery.url()
podaje adres URL bieżącej strony. Proszę wprowadzić poprawki.Po prostu włóż moje dwa centy, jeśli chcesz mieć przedmiot zawierający wszystkie prośby
function getRequests() { var s1 = location.search.substring(1, location.search.length).split('&'), r = {}, s2, i; for (i = 0; i < s1.length; i += 1) { s2 = s1[i].split('='); r[decodeURIComponent(s2[0]).toLowerCase()] = decodeURIComponent(s2[1]); } return r; }; var QueryString = getRequests(); //if url === "index.html?test1=t1&test2=t2&test3=t3" console.log(QueryString["test1"]); //logs t1 console.log(QueryString["test2"]); //logs t2 console.log(QueryString["test3"]); //logs t3
Uwaga, klucz dla każdego parametru get jest ustawiony na małe litery. Zrobiłem więc funkcję pomocniczą. Więc teraz wielkość liter nie jest rozróżniana.
function Request(name){ return QueryString[name.toLowerCase()]; }
źródło
wypróbuj poniższy kod, który pomoże Ci uzyskać parametry GET z adresu URL. po więcej szczegółów.
var url_string = window.location.href; // www.test.com?filename=test var url = new URL(url_string); var paramValue = url.searchParams.get("filename"); alert(paramValue)
źródło
Możesz użyć adresu URL, aby pobrać zmienne GET. W szczególności
window.location.search
podaje wszystko po znaku „?”. Możesz przeczytać więcej o window.location tutaj .źródło
Dziś musiałem uzyskać parametry żądania strony użytkownika do tablicy asocjacyjnej tak ułożyła następujące, z niewielką pomocą z moich przyjaciół . Obsługuje również parametry bez
=
astrue
.Z przykładem:
// URL: http://www.example.com/test.php?abc=123&def&xyz=&something%20else var _GET = (function() { var _get = {}; var re = /[?&]([^=&]+)(=?)([^&]*)/g; while (m = re.exec(location.search)) _get[decodeURIComponent(m[1])] = (m[2] == '=' ? decodeURIComponent(m[3]) : true); return _get; })(); console.log(_GET); > Object {abc: "123", def: true, xyz: "", something else: true} console.log(_GET['something else']); > true console.log(_GET.abc); > 123
źródło
Możesz przeanalizować adres URL bieżącej strony, aby uzyskać parametry GET. Adres URL można znaleźć za pomocą
location.href
.źródło
Jeśli korzystasz już z jquery, dostępna jest wtyczka jquery, która obsługuje to:
http://plugins.jquery.com/project/query-object
źródło
Rozwiązanie redukujące mapę:
var urlParams = location.search.split(/[?&]/).slice(1).map(function(paramPair) { return paramPair.split(/=(.+)?/).slice(0, 2); }).reduce(function (obj, pairArray) { obj[pairArray[0]] = pairArray[1]; return obj; }, {});
Stosowanie:
For url: http://example.com?one=1&two=2 console.log(urlParams.one) // 1 console.log(urlParams.two) // 2
źródło
map/reduce
jest tylko mechanizmem przetwarzania kolekcji: może być używany z danymi o dowolnej wielkości. jest bardziej znany z dużych zbiorów danych ze względu na chęć zrównoleglaniaW przeciwieństwie do innych odpowiedzi,
UrlSearchParams
obiekt może uniknąć używania wyrażeń regularnych lub innych operacji na ciągach znaków i jest dostępny w większości nowoczesnych przeglądarek:var queryString = location.search let params = new URLSearchParams(queryString) // example of retrieving 'id' parameter let id = parseInt(params.get("id")) console.log(id)
źródło
Funkcja tutaj zwraca parametr według nazwy. Po drobnych zmianach będziesz mógł zwrócić podstawowy adres URL, parametr lub kotwicę.
function getUrlParameter(name) { var urlOld = window.location.href.split('?'); urlOld[1] = urlOld[1] || ''; var urlBase = urlOld[0]; var urlQuery = urlOld[1].split('#'); urlQuery[1] = urlQuery[1] || ''; var parametersString = urlQuery[0].split('&'); if (parametersString.length === 1 && parametersString[0] === '') { parametersString = []; } // console.log(parametersString); var anchor = urlQuery[1] || ''; var urlParameters = {}; jQuery.each(parametersString, function (idx, parameterString) { paramName = parameterString.split('=')[0]; paramValue = parameterString.split('=')[1]; urlParameters[paramName] = paramValue; }); return urlParameters[name]; }
źródło
Działa dla mnie w
url: http: // localhost: 8080 / # /? access_token = 111
function get(name){ const parts = window.location.href.split('?'); if (parts.length > 1) { name = encodeURIComponent(name); const params = parts[1].split('&'); const found = params.filter(el => (el.split('=')[0] === name) && el); if (found.length) return decodeURIComponent(found[0].split('=')[1]); } }
źródło