【问题标题】:Get the query string value and display it in my html page获取查询字符串值并将其显示在我的 html 页面中
【发布时间】:2013-03-27 07:16:45
【问题描述】:

重定向到 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>");

【问题讨论】:

标签: javascript html query-string


【解决方案1】:

在您的函数 function getParams() 中,您被声明为变量 var params = new Array();,我认为这会让您感到困惑

如果找到匹配项,您分配了像params[nameVal[0]] = nameVal[1]; 这样的url 参数,这实际上并没有将值添加到数组对象中。所以 params.length0 。但它可以作为数组是对象的实例 .. 即 params instanceof Objecttrue

所以改为基本对象..以避免混淆

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;
}

【讨论】:

  • 因此得到相同的结果。我必须在此页面中简单地显示这些值
  • @VenilAravazhi 确实尝试过 firstname = unescape(params["FirstName"]); ,它区分大小写
  • 使用 document.write(i," = "+ params[i] + "
    "); 代替 console.log( i , params[i] );。现在它工作正常。你的代码对我很有帮助。非常感谢。
【解决方案2】:

您可以使用以下方法将查询字符串从 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();

【讨论】:

  • 如何打印对象中的值?
  • 任何你喜欢的方式。例如。在您的情况下,queryObj.FirstName 将包含 FirstName 的值
猜你喜欢
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多