获取查询字符串值并将其显示在我的 html 页面中
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15653554/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Get the query string value and display it in my html page
提问by Venil Aravazhi
After redirecting to home.html page, i can see the querystring values which i had given in the previous page.
重定向到 home.html 页面后,我可以看到我在上一页中给出的查询字符串值。
Home.html?FirstName=dd&LastName=ee&smtButton=Submit
And am getting the result as:
我得到的结果是:
firstname = undefined
lastname = undefined
age = undefined
Could anyone help me to solve this?
谁能帮我解决这个问题?
JS:
JS:
function getParams() {
var idx = document.URL.indexOf('?');
var params = new Array();
if (idx != -1) {
var pairs = document.URL.substring(idx + 1, document.URL.length).split('&');
for (var i = 0; i < pairs.length; i++) {
nameVal = pairs[i].split('=');
params[nameVal[0]] = nameVal[1];
}
}
return params;
}
params = getParams();
firstname = unescape(params["firstname"]);
lastname = unescape(params["lastname"]);
age = unescape(params["age"]);
document.write("firstname = " + firstname + "<br>");
document.write("lastname = " + lastname + "<br>");
document.write("age = " + age + "<br>");
采纳答案by rab
Inside your function function getParams()
you are declared variable var params = new Array();
, I think this makes confusion for you
在您的函数中,function getParams()
您被声明为变量var params = new Array();
,我认为这会让您感到困惑
if a match is found , you assigned url param like params[nameVal[0]] = nameVal[1];
, this actually not adding value into array object. so params.length
is 0.but it will works as array is instance of object .. ie params instanceof Object
is true
如果找到匹配项,则您分配了 url 参数,例如params[nameVal[0]] = nameVal[1];
,这实际上并未将值添加到数组对象中。所以params.length
是0 。但它会工作,因为数组是对象的实例 .. 即params instanceof Object
是true
so change into basic object .. to avoid confusion
所以改为基本对象..以避免混淆
function getParams() {
var idx = document.URL.indexOf('?');
var params = {}; // simple js object
.. here goes other code
}
and object key is case sensitive, so FirstName
will work ..
和对象键区分大小写,所以FirstName
会工作..
firstname = unescape(params["FirstName"]);
to print all values try this
打印所有值试试这个
params = getParams();
for( var i in params ){
console.log( i , params[i] );
}
it will print
它会打印
FirstName dd
LastName ee
smtButton Submit
and I have modified your getParams code
我修改了你的 getParams 代码
function getParams() {
var params = {},
pairs = document.URL.split('?')
.pop()
.split('&');
for (var i = 0, p; i < pairs.length; i++) {
p = pairs[i].split('=');
params[ p[0] ] = p[1];
}
return params;
}
回答by KooiInc
You can convert a querystring from the location.search
-string to a js-object using:
您可以使用以下方法将查询字符串从location.search
-string 转换为 js-object:
String.prototype.q2obj = function(){
var qArr = this.split('&')
,qObj = {}
,i =-1;
while(++i<qArr.length) {
qfrag = qArr[i].split('=');
qObj[qfrag[0]] = qfrag[1];
}
return qObj;
};
//usage
var queryObj = location.search.substr(1).q2obj();