Я видел много примеров jQuery, где размер и имя параметра неизвестны. У моего URL будет только одна строка:
http://example.com?sent=yes
Я просто хочу обнаружить:
sent
существовать?Лучшее решение Вот.
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = window.location.search.substring(1),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
}
}
};
И вот как вы можете использовать эту функцию, предполагая, что URL,
http://dummy.com/?technology=jquery&blog=jquerybyexample
,
var tech = getUrlParameter('technology');
var blog = getUrlParameter('blog');
Фрагмент кода jQuery, чтобы получить динамические переменные, хранящиеся в URL-адресе в качестве параметров, и сохранить их в виде переменных JavaScript, готовых для использования с вашими сценариями:
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (results==null) {
return null;
}
return decodeURI(results[1]) || 0;
}
example.com?param1=name¶m2 =&ID = 6
$.urlParam('param1'); // name
$.urlParam('id'); // 6
$.urlParam('param2'); // null
пример params с пробелами
http://www.jquery4u.com?city=Gold Coast
console.log($.urlParam('city'));
//output: Gold%20Coastconsole.log(decodeURIComponent($.urlParam('city')));
//output: Gold Coast
Решение от 2019
У нас есть: http://example.com?sent=yes
let searchParams = new URLSearchParams(window.location.search)
Есть ли послал существовать?
searchParams.has('sent') // true
Это равный на «да»?
let param = searchParams.get('sent')
а затем просто сравните это.
Я всегда придерживаюсь одной строки. Теперь у params есть переменные:
params={};location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){params[k]=v})
многострочный:
var params={};
window.location.search
.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(str,key,value) {
params[key] = value;
}
);
как функция
function getSearchParams(k){
var p={};
location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v})
return k?p[k]:p;
}
который вы могли бы использовать как:
getSearchParams() //returns {key1:val1, key2:val2}
или же
getSearchParams("key1") //returns val1
Может быть, уже слишком поздно. Но этот метод очень прост и прост
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.url.js"></script>
<!-- URL: www.example.com/correct/?message=done&year=1990 -->
<script type="text/javascript">
$(function(){
$.url.attr('protocol') // --> Protocol: "http"$.url.attr('path') // --> host: "www.example.com"$.url.attr('query') // --> path: "/correct/"$.url.attr('message') // --> query: "done"$.url.attr('year') // --> query: "1990"});
ОБНОВИТЬ
Требуется плагин url: plugins.jquery.com/url
Спасибо -Рипоунет
Еще одна альтернативная функция …
function param(name) {
return (location.search.split(name + '=')[1] || '').split('&')[0];
}
Или вы можете использовать эту аккуратную маленькую функцию, потому что почему слишком сложные решения?
function getQueryParam(param) {
location.search.substr(1)
.split("&")
.some(function(item) { // returns first occurence and stops
return item.split("=")[0] == param && (param = item.split("=")[1])
})
return param
}
что выглядит еще лучше, когда упрощено и подчеркнуто:
var queryDict = {};
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})
результат: queryDict ['sent'] // undefined или 'value'
Вам лучше увидеть этот ответ: Как я могу получить значения строки запроса в JavaScript?
Красться пик
"?a=1&b=2&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dståle%26car%3Dsaab"> queryDict
a: ["1", "5", "t e x t"]
b: ["2"]
c: ["3"]
d: [undefined]
e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"]
> queryDict["a"][1] // "5"> queryDict.a[1] // "5"
Возможно, вы захотите дать Дантист JS взгляд? (отказ от ответственности: я написал код)
код:
document.URL == "http://helloworld.com/quotes?id=1337&author=kelvin&message=hello"var currentURL = document.URL;
var params = currentURL.extract();
console.log(params.id); // 1337
console.log(params.author) // "kelvin"console.log(params.message) // "hello"
с помощью Dentist JS вы можете в основном вызывать функцию extract () для всех строк (например, document.URL.extract ()), и вы получаете HashMap всех найденных параметров. Это также настраивается для работы с разделителями и все.
Минимизированная версия < 1kb