javascript document.title windows - Modifica i parametri URL




8 Answers

Penso che tu voglia il plugin di query .

Per esempio:

window.location.search = jQuery.query.set("rows", 10);

Funzionerà indipendentemente dallo stato corrente delle righe.

on object

Ho questo URL:

site.fwx?position=1&archiveid=5000&columns=5&rows=20&sorting=ModifiedTimeAsc

ciò di cui ho bisogno è poter cambiare il valore del parametro url 'rows' in qualcosa che specifichi, diciamo 10. E se le 'righe' non esistono, devo aggiungerlo alla fine dell'URL e aggiungere il valore che ho già specificato (10).




Ben Alman ha un buon plugin jquery querystring / url che ti permette di manipolare facilmente la querystring.

Come richiesto -

Vai alla sua pagina di test here

In firebug, inserisci quanto segue nella console

jQuery.param.querystring(window.location.href, 'a=3&newValue=100');

Ti verrà restituita la seguente stringa di url modificata

http://benalman.com/code/test/js-jquery-url-querystring.html?a=3&b=Y&c=Z&newValue=100#n=1&o=2&p=3

Si noti che un valore di querystring per a è cambiato da X a 3 e ha aggiunto il nuovo valore.

Puoi quindi utilizzare la nuova stringa url, ad ogni modo, ad es. Usando document.location = newUrl o modificando un link di ancoraggio, ecc




Piccola soluzione rapida in js puro, nessun plugin necessario:

function replaceQueryParam(param, newval, search) {
    var regex = new RegExp("([?;&])" + param + "[^&;]*[;&]?");
    var query = search.replace(regex, "$1").replace(/&$/, '');

    return (query.length > 2 ? query + "&" : "?") + (newval ? param + "=" + newval : '');
}

Chiamalo così:

 window.location = '/mypage' + replaceQueryParam('rows', 55, window.location.search)

Oppure, se vuoi rimanere sulla stessa pagina e sostituire più parametri:

 var str = window.location.search
 str = replaceQueryParam('rows', 55, str)
 str = replaceQueryParam('cols', 'no', str)
 window.location = window.location.pathname + str

edit, thanks Luca: Per rimuovere completamente il parametro, passa false o null per il valore: replaceQueryParam('rows', false, params) . Poiché 0 è anche falsi , specifica '0' .




Un approccio moderno a questo è utilizzare URLSearchParams basati URLSearchParams standard nativo. Per i browser meno recenti sono available polifragioli

const paramsString = "site.fwx?position=1&archiveid=5000&columns=5&rows=20&sorting=ModifiedTimeAsc"
const searchParams = new URLSearchParams(paramsString);
searchParams.set('rows', 10);



Puoi usare questa mia biblioteca per fare il lavoro: https://github.com/Mikhus/jsurl

var url = new Url('site.fwx?position=1&archiveid=5000&columns=5&rows=20&sorting=ModifiedTimeAsc');
url.query.rows = 10;
alert( url);



Qui ho preso la risposta di Adil Malik e risolto i 3 problemi che ho identificato con esso.

/**
 * Adds or updates a URL parameter.
 *
 * @param {string} url  the URL to modify
 * @param {string} param  the name of the parameter
 * @param {string} paramVal  the new value for the parameter
 * @return {string}  the updated URL
 */
self.setParameter = function (url, param, paramVal){
  // http://.com/a/10997390/2391566
  var parts = url.split('?');
  var baseUrl = parts[0];
  var oldQueryString = parts[1];
  var newParameters = [];
  if (oldQueryString) {
    var oldParameters = oldQueryString.split('&');
    for (var i = 0; i < oldParameters.length; i++) {
      if(oldParameters[i].split('=')[0] != param) {
        newParameters.push(oldParameters[i]);
      }
    }
  }
  if (paramVal !== '' && paramVal !== null && typeof paramVal !== 'undefined') {
    newParameters.push(param + '=' + encodeURI(paramVal));
  }
  if (newParameters.length > 0) {
    return baseUrl + '?' + newParameters.join('&');
  } else {
    return baseUrl;
  }
}



Anch'io ho scritto una libreria per ottenere e impostare parametri di query URL in JavaScript .

Ecco un esempio del suo utilizzo.

var url = Qurl.create()
  , query
  , foo
  ;

Ottieni parametri di query come oggetto, per chiave o aggiungi / modifica / rimuovi.

// returns { foo: 'bar', baz: 'qux' } for ?foo=bar&baz=qux
query = url.query();

// get the current value of foo
foo = url.query('foo');

// set ?foo=bar&baz=qux
url.query('foo', 'bar');
url.query('baz', 'qux');

// unset foo, leaving ?baz=qux
url.query('foo', false); // unsets foo






Related