Ottieni il parametro jlery url o Come ottenere valori stringa di query in js

Ho visto molti esempi di jQuery in cui la dimensione dei parametri e il nome sono sconosciuti. Il mio URL avrà sempre una sola stringa:

http://example.com?sent=yes 

Voglio solo rilevare:

  1. L’ sent esiste?
  2. È uguale a “sì”?

La migliore soluzione qui .

 var getUrlParameter = function getUrlParameter(sParam) { var sPageURL = decodeURIComponent(window.location.search.substring(1)), sURLVariables = sPageURL.split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : sParameterName[1]; } } }; 

E questo è come puoi usare questa funzione presumendo che l'URL sia,
http://dummy.com/?technology=jquery&blog=jquerybyexample .

 var tech = getUrlParameter('technology'); var blog = getUrlParameter('blog'); 

jQuery snippet di codice per ottenere le variabili dinamiche memorizzate nell’URL come parametri e memorizzarle come variabili JavaScript pronte per l’uso con gli script:

 $.urlParam = function(name){ var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); if (results==null){ return null; } else{ return decodeURI(results[1]) || 0; } } 

example.com?param1=name&param2=&id=6

 $.urlParam('param1'); // name $.urlParam('id'); // 6 $.urlParam('param2'); // null 

esempio param con spazi

 http://www.jquery4u.com?city=Gold Coast console.log($.urlParam('city')); //output: Gold%20Coast console.log(decodeURIComponent($.urlParam('city'))); //output: Gold Coast 

Soluzione dal 2018

Abbiamo: http://example.com?sent=yes

 let searchParams = new URLSearchParams(window.location.search) 

L’ inviato esiste ?

 searchParams.has('sent') // true 

È uguale a “sì”?

 let param = searchParams.get('sent') 

e poi basta confrontarlo.

Lo applico sempre come una riga. Ora params ha i vars:

 params={};location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){params[k]=v}) 

multi-allineati:

 var params={}; window.location.search .replace(/[?&]+([^=&]+)=([^&]*)/gi, function(str,key,value) { params[key] = value; } ); 

come una funzione

 function getSearchParams(k){ var p={}; location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v}) return k?p[k]:p; } 

che puoi usare come:

 getSearchParams() //returns {key1:val1, key2:val2} 

o

 getSearchParams("key1") //returns val1 

Potrebbe essere troppo tardi. Ma questo metodo è molto facile e semplice

     

AGGIORNARE
Richiede il plugin dell'URL : plugins.jquery.com/url
Grazie -Ripounet

Oppure puoi usare questa piccola e semplice funzione, perché le soluzioni complicate?

 function getQueryParam(param) { location.search.substr(1) .split("&") .some(function(item) { // returns first occurence and stops return item.split("=")[0] == param && (param = item.split("=")[1]) }) return param } 

che sembra ancora meglio se semplificato e onelined:

tl; dr soluzione a una linea

 var queryDict = {}; location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]}) 
 risultato:
 queryDict ['inviato'] // non definito o 'valore'

Ma cosa succede se hai caratteri codificati o chiavi multivalore ?

È meglio vedere questa risposta: come posso ottenere valori stringa di query in JavaScript?

Sneak Peak

 "?a=1&b=2&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dståle%26car%3Dsaab" > queryDict a: ["1", "5", "text"] b: ["2"] c: ["3"] d: [undefined] e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"] > queryDict["a"][1] // "5" > queryDict.a[1] // "5" 

Ancora un’altra funzione alternativa …

 function param(name) { return (location.search.split(name + '=')[1] || '').split('&')[0]; } 

Forse potresti voler dare un’occhiata al dentista JS ? (disclaimer: ho scritto il codice)

codice:

 document.URL == "http://helloworld.com/quotes?id=1337&author=kelvin&message=hello" var currentURL = document.URL; var params = currentURL.extract(); console.log(params.id); // 1337 console.log(params.author) // "kelvin" console.log(params.message) // "hello" 

con Dentist JS, puoi praticamente chiamare la funzione extract () su tutte le stringhe (ad esempio, document.URL.extract ()) e recuperare una HashMap di tutti i parametri trovati. È anche personalizzabile per gestire i delimitatori e tutto.

Versione min. <1kb

Questo è semplice e ha funzionato per me

 $.urlParam = function(name){ var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); return results[1] || 0; } 

quindi se il tuo URL è http://www.yoursite.com?city=4

prova questo

 console.log($.urlParam('city')); 
 function GetRequestParam(param) { var res = null; try{ var qs = decodeURIComponent(window.location.search.substring(1));//get everything after then '?' in URI var ar = qs.split('&'); $.each(ar, function(a, b){ var kv = b.split('='); if(param === kv[0]){ res = kv[1]; return false;//break loop } }); }catch(e){} return res; } 

Spero che questo ti possa aiutare.

   

C’è questa fantastica libreria: https://github.com/allmarkedup/purl

che ti permette di fare semplicemente

 url = 'http://example.com?sent=yes'; sent = $.url(url).param('sent'); if (typeof sent != 'undefined') { // sent exists if (sent == 'yes') { // sent is equal to yes // ... } } 

L’esempio presuppone che tu stia utilizzando jQuery. Potresti anche usarlo come semplice javascript, la syntax sarebbe un po ‘diversa.

Questo potrebbe essere eccessivo, ma è ora disponibile una libreria molto popolare per l’analisi degli URI, chiamata URI.js.

Esempio

 var uri = "http://example.org/foo.html?technology=jquery&technology=css&blog=stackoverflow"; var components = URI.parse(uri); var query = URI.parseQuery(components['query']); document.getElementById("result").innerHTML = "URI = " + uri; document.getElementById("result").innerHTML += "
technology = " + query['technology']; // If you look in your console, you will see that this library generates a JS array for multi-valued queries! console.log(query['technology']); console.log(query['blog']);
   

Prova questa demo funzionante http://jsfiddle.net/xy7cX/

API:

Questo dovrebbe aiutare :)

codice

 var url = "http://myurl.com?sent=yes" var pieces = url.split("?"); alert(pieces[1] + " ===== " + $.inArray("sent=yes", pieces)); 

Questo ti darà un bel object con cui lavorare

  function queryParameters () { var result = {}; var params = window.location.search.split(/\?|\&/); params.forEach( function(it) { if (it) { var param = it.split("="); result[param[0]] = param[1]; } }); return result; } 

E poi;

  if (queryParameters().sent === 'yes') { ..... 

Questo è basato sulla risposta di Gazoris , ma l’URL decodifica i parametri in modo che possano essere utilizzati quando contengono dati diversi da numeri e lettere:

 function urlParam(name){ var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); // Need to decode the URL parameters, including putting in a fix for the plus sign // https://stackoverflow.com/a/24417399 return results ? decodeURIComponent(results[1].replace(/\+/g, '%20')) : null; } 

Così semplice è ansible utilizzare qualsiasi URL e ottenere valore

 function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } 

Esempio di utilizzo

 // query string: ?first=value1&second=&value2 var foo = getParameterByName('first'); // "value1" var bar = getParameterByName('second'); // "value2" 

Nota: se un parametro è presente più volte (? First = value1 e second = value2), si otterrà il primo valore (valore1) e il secondo valore come (valore2).

C’è un altro esempio con l’uso della libreria URI.js.

Esempio risponde alle domande esattamente come richiesto.

 var url = 'http://example.com?sent=yes'; var urlParams = new URI(url).search(true); // 1. Does sent exist? var sendExists = urlParams.sent !== undefined; // 2. Is it equal to "yes"? var sendIsEqualtToYes = urlParams.sent == 'yes'; // output results in readable form // not required for production if (sendExists) { console.log('Url has "sent" param, its value is "' + urlParams.sent + '"'); if (urlParams.sent == 'yes') { console.log('"Sent" param is equal to "yes"'); } else { console.log('"Sent" param is not equal to "yes"'); } } else { console.log('Url hasn\'t "sent" param'); } 
  

Versione di coffeescript della risposta di Sameer

 getUrlParameter = (sParam) -> sPageURL = window.location.search.substring(1) sURLVariables = sPageURL.split('&') i = 0 while i < sURLVariables.length sParameterName = sURLVariables[i].split('=') if sParameterName[0] == sParam return sParameterName[1] i++ 

Un leggero miglioramento della risposta di Sameer, i parametri della cache in chiusura per evitare l’analisi e il looping di tutti i parametri ogni volta che si chiama

 var getURLParam = (function() { var paramStr = decodeURIComponent(window.location.search).substring(1); var paramSegs = paramStr.split('&'); var params = []; for(var i = 0; i < paramSegs.length; i++) { var paramSeg = paramSegs[i].split('='); params[paramSeg[0]] = paramSeg[1]; } console.log(params); return function(key) { return params[key]; } })(); 

Io uso questo e funziona. http://codesheet.org/codesheet/NF246Tzs

 function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = value; }); return vars; } var first = getUrlVars()["id"]; 

Con vanilla JavaScript, potresti facilmente prendere i parametri (location.search), ottenere la sottostringa (senza?) E trasformarla in una matrice, dividendola con ‘&’.

Mentre esegui l’iterazione su urlParams, puoi dividere nuovamente la stringa con “=” e aggiungerla all’object “params” come object [elmement [0]] = elemento [1]. Super semplice e facile accesso.

http://www.website.com/?error=userError&type=handwritten

  var urlParams = location.search.substring(1).split('&'), params = {}; urlParams.forEach(function(el){ var tmpArr = el.split('='); params[tmpArr[0]] = tmpArr[1]; }); var error = params['error']; var type = params['type']; 

Cosa succede se c’è & in parametro URL come filename = “p & g.html” & uid = 66

In questo caso la 1a funzione non funzionerà correttamente. Così ho modificato il codice

 function getUrlParameter(sParam) { var sURLVariables = window.location.search.substring(1).split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]); } } } 

Devo ammettere che sto aggiungendo la mia risposta a una domanda con risposta eccessiva, ma questo ha i vantaggi di:

– Non dipende da nessuna libreria esterna, incluso jQuery

– Spazio dei nomi di funzione globale non inquinante, estendendo ‘String’

– Non si creano dati globali e si esegue l’elaborazione non necessaria dopo la corrispondenza trovata

– Gestire i problemi di codifica e accettare (assumendo) il nome del parametro non codificato

– Evitare cicli espliciti

 String.prototype.urlParamValue = function() { var desiredVal = null; var paramName = this.valueOf(); window.location.search.substring(1).split('&').some(function(currentValue, _, _) { var nameVal = currentValue.split('='); if ( decodeURIComponent(nameVal[0]) === paramName ) { desiredVal = decodeURIComponent(nameVal[1]); return true; } return false; }); return desiredVal; }; 

Quindi lo useresti come:

 var paramVal = "paramName".urlParamValue() // null if no match 

Se si desidera trovare un parametro specifico da un URL specifico:

 function findParam(url, param){ var check = "" + param; if(url.search(check )>=0){ return url.substring(url.search(check )).split('&')[0].split('=')[1]; } } var url = "http://www.yourdomain.com/example?id=1&order_no=114&invoice_no=254"; alert(findParam(url,"order_no")); 

Utilizzando URLSearchParams :

 var params = new window.URLSearchParams(window.location.search); console.log(params.get('name')); 

Un’altra soluzione che utilizza jQuery e JSON, quindi è ansible accedere ai valori dei parametri tramite un object.

 var loc = window.location.href; var param = {}; if(loc.indexOf('?') > -1) { var params = loc.substr(loc.indexOf('?')+1, loc.length).split("&"); var stringJson = "{"; for(var i=0;i 

Supponendo che il tuo URL sia http://example.com/?search=hello+world&language=en&page=3

Dopodiché è solo questione di usare i parametri come questo:

 param.language 

ritornare

 en 

L'utilizzo più utile di questo è eseguirlo al caricamento della pagina e utilizzare una variabile globale per utilizzare i parametri ovunque sia necessario.

Se il tuo parametro contiene valori numerici, analizza il valore.

 parseInt(param.page) 

Se non ci sono parametri, param sarà solo un object vuoto.

 $.urlParam = function(name) { var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); return results[1] || 0; } 

Usa questo

 $.urlParam = function(name) { var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); return results[1] || 0; } 

Volevo solo mostrare i miei codici:

 function (name) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 

}