Как получать стоимость унифицированного указателя ресурса (GET) в языке сценариев JavaScript?

Часто я потребовал того, чтобы брать стоимость, предоставляемую из-за URL чтобы осуществлять какое-то действие или просто чтобы печатать в пользователе вышеупомянутые данные без необходимости проходить по языку стороны сервера (уже будьте Python, PHP, Ruby, между другими).

Каково лучшее решение?

15
задан 30.04.2017, 05:10
3 ответа

В языке сценариев 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). В конце концов вышеупомянутый расположенный напротив декодированный и возвращенный текст. В удаленном случае не нахождения совпадений, он возвратит пустую цепь.

16
ответ дан 01.12.2019, 08:17

Я использую уже делает 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>

Ссылок:

9
ответ дан 01.12.2019, 08:17
let params = new URLSearchParams(location.search);
var contract = params.get('contrato');

Ну, в мое это я функционировал довольно

Интерфейс URLSearchParams определяет mГ©todos Гєtiles, чтобы работать с ними parГЎmetros bГєsqueda одной унифицированный указатель ресурса.

Снабжает ссылками

3
ответ дан 01.12.2019, 08:17
  • 1
    Пожалуйста прочитай CГіmo отвечать , твой ответ podrí чтобы быть помеченной как низкого качества, так как он одинокий có я говорю без explicació n какая-то – Aprendiz 14.05.2019, 17:53
  • 2
    @Aprendiz уже arreglé посмотри хорошо :) – Robinson Calderón 14.05.2019, 17:57