Какой самый простой способ читать / манипулировать параметрами строки запроса с помощью javascript?

StackOverflow https://stackoverflow.com/questions/150404

  •  02-07-2019
  •  | 
  •  

Вопрос

Примеры, которые я видел в Интернете, кажутся гораздо более сложными, чем я ожидал (ручной разбор &/?/= на пары, использование регулярных выражений и т.д.). Мы используем asp.net ajax (ничего не вижу в их ссылке на стороне клиента) и я бы подумал о добавлении jQuery, если бы это действительно помогло.

Я бы подумал, что есть более элегантное решение - пока что это лучший код, который я нашел но я хотел бы найти что-то еще в духе HttpRequest.Объект QueryString (asp.net на стороне сервера).Заранее благодарю,

Шейн

Это было полезно?

Решение

Действительно, существует Плагин QueryString для jQuery, если вы готовы установить ядро jQuery и плагин, это может оказаться полезным.

Другие советы

Я использую эту функцию на случай, если я не хочу использовать плагин:

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 null;
}

Взгляните на мой пост, поскольку в нем точно рассказывается, как это сделать:

http://seattlesoftware.wordpress.com/2008/01/16/javascript-query-string/

Для jQuery я предлагаю jQuery БАРБЕКЮ:Кнопка "Назад" и библиотека запросов Автор: "Ковбой" Бен Алман

jQuery BBQ использует HTML5 событие hashchange, чтобы разрешить простой, но мощные позволяет создавать закладки #хэш истории.Кроме того, jQuery BBQ предоставляет полный метод .deparam(), а также управление состоянием хэша и синтаксический анализ фрагмента / строки запроса и служебные методы слияния.

Пример:

// Parse URL, deserializing query string into an object.
// http://www.example.com/foo.php?a=1&b=2&c=hello#test
// search is set to ?a=1&b=2&c=hello
// myObj is set to { a:"1", b:"2", c:"hello" }
var search = window.location.search;
var myObj = $.deparam.querystring( search );

Используйте строковую утилиту из prototypejs.org, которая называется toQueryParams().

Пример с их сайта: http://prototypejs.org/api/string/toQueryParams

'section=блог&id=45'.toQueryParams();
// -> {раздел:"блог", идентификатор:'45'}

'section=блог;id=45'.toQueryParams();
// -> {раздел:"блог", идентификатор:'45'}

'http://www.example.com?section=blog&id=45#comments'.toQueryParams();
// -> {раздел:"блог", идентификатор:'45'}

'section=блог&tag=javascript&tag=прототип&tag=doc'.toQueryParams();
// -> {раздел:"блог", тег:['javascript', 'прототип', 'doc']}

'tag=ruby%20on%20rails'.toQueryParams();
// -> {тег:"ruby on rails" (руби на рельсах) }

'id=45&raw'.toQueryParams();
// -> {идентификатор:'45', необработанный:неопределенный}

Кроме того, вы можете использовать псевдоним ParseQuery() для получения тех же результатов.

window.location.search.parseQuery();

Поскольку window.location возвращает объект, вы должны получить строку.

  *$(document).ready(function () {
            $("#a").click(function () {
                window.location.href = "secondpage.aspx?id='0' & name='sunil'& add='asr' & phone='1234'";
            });
        });*


**then read the query string parameters on another using split method . Here as follows:**


  *$(document).ready(function () {
            var a = decodeURI(window.location.search);
            var id = window.location.search = "id=" + $().val();
            var name = a.split("name=")[1].split("&")[0].split("'")[1];
            var phone = a.split("phone=")[1].split("&")[0].split("'")[1];
            var add = a.split("add=")[1].split("&")[0].split("'")[1];
            alert(id+','+name+','+add+','+phone); 
        });*

Если есть какая-либо вероятность столкнуться с повторяющимися параметрами (например,?tag=foo&tag=bar), большинства существующих библиотек будет недостаточно.В таком случае, возможно, вы захотите рассмотреть эту библиотеку, которую я разработал на основе книги Яна Вольтера. очень всеобъемлющий парсер.Я добавил функции .plus() и .minus() и округление:

https://github.com/timmc/js-tools/blob/master/src/QueryString.js

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top