Как проверить, равна ли строка запроса URL-адреса чему-либо с помощью javascript (или jquery) [дубликат]

avatar
djonamish
9 августа 2021 в 03:26
197
2
0

Я знаю, что этот вопрос кажется довольно актуальным, но 90% ответов указывают на решение, которое мне не подходит (indexof > -1).

if ( window.location.href.indexOf("product=3") > -1 || window.location.href.indexOf("product=2") > -1 ) {
    alert('success');
}else {
  alert('nothing');
}

Проблема в том, что для продукта 30 это также предупреждает об успехе.

Есть ли простое решение, которое может обнаружить точное совпадение в строке запроса URL?

Например

mycoolsite.com/cart/?type=buynow&product=30

Как мы можем проверить с помощью javascript или jquery, если произведение равно 30?

Источник
Twisty
9 августа 2021 в 03:34
0

Добро пожаловать в Stack Overflow. Я бы посоветовал посмотреть на coderhelper.com/questions/4656843/… Используя верхний ответ, вы можете получить все значения, поэтому теперь вы сможете проверить, является ли это 3 или 30 .

djonamish
9 августа 2021 в 03:48
0

Спасибо за это @Twisty, очень полезно. В поиске такого не увидел. Применил его, и он работает хорошо. Спасибо!

Ответы (2)

avatar
Twisty
9 августа 2021 в 04:18
0

Используя следующее: Получить строку запроса из URL с помощью jQuery

Я бы предложил следующее:

$(function() {
  function getUrlVars(url) {
    var vars = {},
      hash;
    if (url.indexOf("?") < 0) {
      return false;
    }
    var hashes = url.substring(url.indexOf("?") + 1)
    $.each(hashes.split("&"), function(i, v) {
      hash = v.split('=');
      vars[hash[0]] = hash[1];
    });
    //console.log(url, hashes, vars);
    return vars;
  }

  var queryData;
  queryData = getUrlVars(window.location.href + "?buynow&product=3");
  console.log(queryData);
  queryData = getUrlVars(window.location.href + "?buynow&product=3&product=2");
  console.log(queryData);
  queryData = getUrlVars(window.location.href + "?buynow&product[]=3&product[]=2");
  console.log(queryData);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="result"></div>

У этого кода есть некоторые оговорки. Как вы можете видеть в моих тестах, если у вас есть несколько элементов с одинаковым именем или индексом переменной, они перезапишут другие значения. Также он не будет читать в массивах. Вы можете добавить проверку для этого и написать функцию для обработки части массива.

Если ваш хэш запроса всегда более простой, это может сработать достаточно хорошо.

avatar
djonamish
9 августа 2021 в 03:49
0

Использовал функцию из этого поста в соответствии с рекомендациями Twisty в комментариях и работает хорошо.

Получить строку запроса из URL с помощью jQuery