Ich versuche, Daten von einer Seite an eine andere zu übergeben.Wie liest man GET-Daten von einer URL mit JavaScript?
www.mints.com?name=something
Wie name
mit JavaScript lesen?
Ich versuche, Daten von einer Seite an eine andere zu übergeben.Wie liest man GET-Daten von einer URL mit JavaScript?
www.mints.com?name=something
Wie name
mit JavaScript lesen?
function parseURLParams(url) {
var queryStart = url.indexOf("?") + 1,
queryEnd = url.indexOf("#") + 1 || url.length + 1,
query = url.slice(queryStart, queryEnd - 1),
pairs = query.replace(/\+/g, " ").split("&"),
parms = {}, i, n, v, nv;
if (query === url || query === "") return;
for (i = 0; i < pairs.length; i++) {
nv = pairs[i].split("=", 2);
n = decodeURIComponent(nv[0]);
v = decodeURIComponent(nv[1]);
if (!parms.hasOwnProperty(n)) parms[n] = [];
parms[n].push(nv.length === 2 ? v : null);
}
return parms;
}
Verwenden Sie wie folgt vor:
var urlString = "http://www.foo.com/bar?a=a+a&b%20b=b&c=1&c=2&d#hash";
urlParams = parseURLParams(urlString);
, die ein ein Objekt wie folgt zurückgibt:
{
"a" : ["a a"], /* param values are always returned as arrays */
"b b": ["b"], /* param names can have special chars as well */
"c" : ["1", "2"] /* an URL param can occur multiple times! */
"d" : [null] /* parameters without values are set to null */
}
So
parseURLParams("www.mints.com?name=something")
gibt
{name: ["something"]}
EDIT: Die original version of this answer einen Regex-basierten Ansatz zum URL-Parsing verwendet. Es verwendete eine kürzere Funktion, aber der Ansatz war fehlerhaft und ich ersetzte ihn durch einen richtigen Parser.
location.search https://developer.mozilla.org/en/DOM/window.location
obwohl die meisten verwenden eine Art von Analyseroutine Query-String-Parameter zu lesen.
hier ist ein http://safalra.com/web-design/javascript/parsing-query-strings/
Hier ist eine Lösung. Natürlich muss diese Funktion nicht in eine "window.params" -Option geladen werden, die angepasst werden kann.
window.params = function(){
var params = {};
var param_array = window.location.href.split('?')[1].split('&');
for(var i in param_array){
x = param_array[i].split('=');
params[x[0]] = x[1];
}
return params;
}();
Beispiel API-Aufruf auf http://www.mints.com/myurl.html?name=something&goal=true:
if(window.params.name == 'something') doStuff();
else if(window.params.goal == 'true') shoutGOOOOOAAALLL();
Ich denke, das sollte auch funktionieren:
function $_GET(q,s) {
s = (s) ? s : window.location.search;
var re = new RegExp('&'+q+'=([^&]*)','i');
return (s=s.replace(/^\?/,'&').match(re)) ?s=s[1] :s='';
}
Rufen Sie es wie folgt aus:
var value = $_GET('myvariable');
Iv'e Tomalaks Antwort wurde verbessert/verbessert mit:
location.search
Wert anstelle einer URL.Code:
function getSearchObject() {
if (location.search === "") return {};
var o = {},
nvPairs = location.search.substr(1).replace(/\+/g, " ").split("&");
nvPairs.forEach(function (pair) {
var e = pair.indexOf('=');
var n = decodeURIComponent(e < 0 ? pair : pair.substr(0,e)),
v = (e < 0 || e + 1 == pair.length)
? null :
decodeURIComponent(pair.substr(e + 1,pair.length - e));
if (!(n in o))
o[n] = v;
else if (o[n] instanceof Array)
o[n].push(v);
else
o[n] = [o[n] , v];
});
return o;
}
ich auch wütend eine ziemlich einfache Funktion. Sie rufen es auf: get ("yourgetname");
und bekommen, was auch immer es war. (jetzt, dass ich es geschrieben habe ich es Ihnen% 26 geben bemerkt, wenn Sie einen & im Wert hatte ..)
function get(name){
var url = window.location.search;
var num = url.search(name);
var namel = name.length;
var frontlength = namel+num+1; //length of everything before the value
var front = url.substring(0, frontlength);
url = url.replace(front, "");
num = url.search("&");
if(num>=0) return url.substr(0,num);
if(num<0) return url;
}
Die aktuell gewählte Antwort nicht gut auf allen in meinem Fall nicht funktioniert, was ich fühle, ist eine ziemlich typische. Ich fand die unten stehende Funktion here und es funktioniert super!
function getAllUrlParams(url) {
// get query string from url (optional) or window
var queryString = url ? url.split('?')[1] : window.location.search.slice(1);
// we'll store the parameters here
var obj = {};
// if query string exists
if (queryString) {
// stuff after # is not part of query string, so get rid of it
queryString = queryString.split('#')[0];
// split our query string into its component parts
var arr = queryString.split('&');
for (var i=0; i<arr.length; i++) {
// separate the keys and the values
var a = arr[i].split('=');
// in case params look like: list[]=thing1&list[]=thing2
var paramNum = undefined;
var paramName = a[0].replace(/\[\d*\]/, function(v) {
paramNum = v.slice(1,-1);
return '';
});
// set parameter value (use 'true' if empty)
var paramValue = typeof(a[1])==='undefined' ? true : a[1];
// (optional) keep case consistent
paramName = paramName.toLowerCase();
paramValue = paramValue.toLowerCase();
// if parameter name already exists
if (obj[paramName]) {
// convert value to array (if still string)
if (typeof obj[paramName] === 'string') {
obj[paramName] = [obj[paramName]];
}
// if no array index number specified...
if (typeof paramNum === 'undefined') {
// put the value on the end of the array
obj[paramName].push(paramValue);
}
// if array index number specified...
else {
// put the value at that index number
obj[paramName][paramNum] = paramValue;
}
}
// if param name doesn't exist yet, set it
else {
obj[paramName] = paramValue;
}
}
}
return obj;
}
gleich hier, dieses eine Arbeit wie ein Charme – Plastic
Entschuldigung, ich bin kein professioneller Javascripter! :) –
@Tomalak können Sie mir bitte die Möglichkeit geben, den Wert des Namens zu drucken? Ich versuche dieses Skript zu verwenden und wenn ich document.write (urlParams) verwende; es gibt mir [Objekt Objekt] , aber ich bekomme nicht den tatsächlichen Wert .. Können Sie mir bitte damit helfen? –
@KiranVemuri: Versuchen Sie 'console.log (JSON.stringify (urlParams))' – Daenarys