Какой самый простой способ читать / манипулировать параметрами строки запроса, используя JavaScript? - PullRequest
13 голосов
/ 30 сентября 2008

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

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

Шейн

Ответы [ 7 ]

13 голосов
/ 30 сентября 2008

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

8 голосов
/ 02 августа 2010

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

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;
}
3 голосов
/ 30 сентября 2008

Посмотрите на мой пост, так как он точно скажет, как это сделать:

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

2 голосов
/ 02 августа 2010

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

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 );
1 голос
/ 27 сентября 2012

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

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

1 голос
/ 07 августа 2012
  *$(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); 
        });*
1 голос
/ 31 декабря 2008

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

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

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

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

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

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

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

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

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

window.location.search.parseQuery();

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

...