重定向到 home.html 页面后,我可以看到我在上一页中给出的查询字符串值。
Home.html?FirstName=dd&LastName=ee&smtButton=Submit
我得到的结果是:
firstname = undefined
lastname = undefined
age = undefined
有人能帮我解决这个问题吗?
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>");
在你的函数内部function getParams()
你被声明为变量var params = new Array();
,我认为这会让你感到困惑
如果找到匹配项,您就分配了 url 参数,例如params[nameVal[0]] = nameVal[1];
,这实际上没有将值添加到数组对象中。所以params.length
is 0.但它会工作,因为数组是对象的实例..即params instanceof Object
is true
所以改变为基本对象..以避免混淆
function getParams() {
var idx = document.URL.indexOf('?');
var params = {}; // simple js object
.. here goes other code
}
并且对象键区分大小写,所以FirstName
将工作 ..
firstname = unescape(params["FirstName"]);
要打印所有值试试这个
params = getParams();
for( var i in params ){
console.log( i , params[i] );
}
它会打印
FirstName dd
LastName ee
smtButton Submit
我修改了你的 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)