Часто я потребовал того, чтобы брать стоимость, предоставляемую из-за URL
чтобы осуществлять какое-то действие или просто чтобы печатать в пользователе вышеупомянутые данные без необходимости проходить по языку стороны сервера (уже будьте Python
, PHP
, Ruby
, между другими).
Каково лучшее решение?
В языке сценариев JavaScript не существуют внутренне присущие функции, которые позволяют нам получать стоимость параметров GET, как это случай языков как PHP, которые могут получать вышеупомянутую стоимость глобальной переменной $GET
. Взамен возможно использовать регулярные выражения, чтобы добиваться результата, который симулировал бы вышеупомянутое поведение, и получать ожидаемую стоимость.
В следующем url (английском языке) мы можем получать функцию опоры: How хан I get query string оцени in язык сценариев JavaScript?
Упоминая первоначальный шрифт предыдущей ссылки, у нас есть, что:
/**
* @param String name
* @return String
*/
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
Принимая во внимание, что мы считаем унифицированный указатель ресурса следующей:
http://www.ejemplo.com.mx/producto?prodId=88
Стоимости, которую было бы нужно получать, было бы 88 и мы бы это получили с:
var prodId = getParameterByName('prodId');
Функция getParameterByName получает параметр типа String (цепь текста), который будет использован, чтобы оценивать посредством регулярного выражения, которое искало бы весь контент между концом полученной цепи, продолженным символом равного (=) и конец цепи, куда искать (location.search
) или до тех пор, пока знакомый не нашел символ «et» также как «ampersand» (y). В конце концов вышеупомянутый расположенный напротив декодированный и возвращенный текст. В удаленном случае не нахождения совпадений, он возвратит пустую цепь.
Я использую уже делает algГєn время она funciГіn созданная Крис Койир , я очень в порядке, у меня не были проблемы и он не использует регулярные выражения:
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0; i < vars.length; i++) {
var pair = vars[i].split("=");
if(pair[0] == variable) {
return pair[1];
}
}
return false;
}
Пример :
унифицированный указатель ресурса: http://store.com/shop.php?product_id=32&cat_id=1&sessionid=123
<div>
<button type="button" onclick="alert(getQueryVariable('sessionid'));">
sessionid
</button>
<button type="button" onclick="alert(getQueryVariable('xyz'));">
xyz
</button>
<button type="button" onclick="alert(getQueryVariable('product_id'));">
product_id
</button>
</div>
<script type="text/javascript">
function getQueryVariable(variable) {
// Estoy asumiendo que query es window.location.search.substring(1);
var query = "product_id=32&cat_id=1&sessionid=123";
var vars = query.split("&");
alert(vars);
for (var i=0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
return false;
}
</script>
let params = new URLSearchParams(location.search);
var contract = params.get('contrato');
Ну, в мое это я функционировал довольно
Интерфейс URLSearchParams определяет mГ©todos Гєtiles, чтобы работать с ними parГЎmetros bГєsqueda одной унифицированный указатель ресурса.