Qual è il modo più semplice per leggere / manipolare i parametri della stringa di query usando javascript?

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

  •  02-07-2019
  •  | 
  •  

Domanda

Gli esempi che ho visto online sembrano molto più complessi di quanto mi aspettassi (analizzando manualmente & amp; /? / = in coppie, usando espressioni regolari, ecc.) Stiamo usando asp.net ajax (non vedono nulla nel loro riferimento lato client) e prenderebbe in considerazione l'aggiunta di jQuery se sarebbe davvero d'aiuto.

Penso che ci sia una soluzione più elegante là fuori - finora questo è il miglior codice che ho trovato ma mi piacerebbe trovare qualcosa di più lungo le linee dell'oggetto HttpRequest.QueryString (lato server asp.net) . Grazie in anticipo,

Shane

È stato utile?

Soluzione

Esiste davvero un plugin QueryString per jQuery, se si desidera installare il core jQuery e il plugin potrebbero rivelarsi utili.

Altri suggerimenti

Sto usando questa funzione nel caso in cui non volessi usare un plugin:

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

Dai un'occhiata al mio post, in quanto ti dice esattamente come fare:

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

Per jQuery suggerisco jQuery BBQ: pulsante Indietro e amp; Libreria di query di " Cowboy " Ben Alman

  

jQuery BBQ sfrutta HTML5   evento hashchange per consentire semplice, ancora   potente storia #hash con segnalibro.   Inoltre, jQuery BBQ fornisce a   metodo completo .deparam (), insieme a   entrambi gestione dello stato hash e   framment / query string parse e   unisci metodi di utilità.

Esempio:

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

Usa l'utilità String di prototypejs.org, chiamata toQueryParams ().

Esempio dal loro sito: http://prototypejs.org/api/string/toQueryParams

  

'section = blog & amp; id = 45'.toQueryParams ();
  // - > {sezione: 'blog', id: '45'}

  'Section = blog; id = 45'.toQueryParams ();
  // - > {sezione: 'blog', id: '45'}

  " http://www.example.com?section=blog&id=45#comments .toQueryParams '();
  // - > {sezione: 'blog', id: '45'}

  'Section = blog & amp; tag = javascript & amp; tag = prototipo & amp; tag = doc'.toQueryParams ();
  // - > {sezione: 'blog', tag: ['javascript', 'prototype', 'doc']}

  'tag = rubino% 20on% 20rails'.toQueryParams ();
  // - > {tag: 'ruby on rails'}

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

Inoltre, è possibile utilizzare l'alias parseQuery () per ottenere gli stessi risultati.

window.location.search.parseQuery();

Poiché window.location restituisce un oggetto, è necessario ottenere la stringa.

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

Se esiste la possibilità di incontrare parametri ripetuti (ad es.? tag = foo & amp; tag = bar), la maggior parte delle librerie non sarà sufficiente. In tal caso, potresti prendere in considerazione questa libreria che ho sviluppato dal parser molto completo di Jan Wolter. Ho aggiunto le funzioni .plus () e .minus () e il roundtripping:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top