Получить функцию параметра URL, которая получает значение части URL или возвращает true, если она есть, но без значения? - PullRequest
0 голосов
/ 16 июня 2010

Я использую следующую функцию для получения параметра URL.

function gup(name, url) {
  name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]');
  var results = new RegExp('[\\?&]'+name+'=?([^&#]*)').exec(url || window.location.href);
  return results == null ? null : results[1];
}

Работает, только если параметр имеет значение, например.

gup('a', 'http://example.com/page.php?a=1&b=2');

вернет 1. Но если я попытаюсь

gup('a', 'http://example.com/page.php?a&b=2');

Возвращает ноль. Я хочу, чтобы он возвращал истину, потому что параметр "а" существует в этом URL, хотя он не имеет значения, он все еще там, и gup () должен возвращать истину. Могу я немного помочь переписать это? Я не так хорош в регулярных выражениях.

Ответы [ 2 ]

3 голосов
/ 16 июня 2010

Для вашего второго примера, он на самом деле не возвращает null, он возвращает пустую строку.

Пустые строки falsy , они приводят к false в логическом контексте, так что вы можете использовать это во второй ветви троичной системы.

Там вы знаете, что что-то совпало (в results[1]), и вы можете вернуть true, только если совпадение falsy (пустая строка):

function gup(name, url) {
  name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]');
  var results = new RegExp('[?&]'+name+'=?([^&#]*)').exec(url || window.location.href);
  return results == null ? null : results[1] || true;
}

gup('a', 'http://example.com/page.php?a&b=2');   // true
gup('a', 'http://example.com/page.php?a=1&b=2'); // "1"
gup('a', 'http://example.com/page.php?b=2');     // null
0 голосов
/ 21 июня 2013

Когда страница загружается, с помощью PHP или любого серверного языка по вашему выбору выведите скрытый ввод для каждого параметра GET.

foreach($_GET as $Name => $Value) {
     echo '<input type="hidden" id="'.$Name.'" value="'.$Value.'">';
}

Затем с помощью javascript вы можете получить значение этого скрытого ввода, котороедаст вам значение параметра url.

var parameterValue = document.getElementById('parameter').value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...