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

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

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

Шейн

Ответы

Ответ 1

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

Ответ 2

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

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

Ответ 4

Для jQuery я предлагаю jQuery BBQ: Back Button и библиотека запросов "Ковбой" Бен Альман

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

Пример:

// 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 );

Ответ 5

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

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

'= раздел блога & ID = 45'.toQueryParams();
//- > {раздел: 'blog', id: '45'}

" Раздел = блог; ID = 45'.toQueryParams();
//- > {раздел: 'blog', id: '45'}

' http://www.example.com?section=blog&id=45#comments'.toQueryParams();
//- > {раздел: 'blog', id: '45'}

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

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

"ID = 45 & raw'.toQueryParams();
//- > {id: '45', raw: undefined}

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

window.location.search.parseQuery();

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

Ответ 6

  *$(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); 
        });*

Ответ 7

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

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