7

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>");
4

2 に答える 2

9

あなたの関数の中であなたfunction getParams()は変数として宣言されていますvar params = new Array();、これはあなたにとって混乱を招くと思います

一致するものが見つかった場合は、のようなurl paramを割り当てましたがparams[nameVal[0]] = nameVal[1];、これは実際には配列オブジェクトに値を追加しません。0params.lengthですが、配列はオブジェクトのインスタンスであるため、機能します。つまり、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;
}
于 2013-03-27T08:45:13.730 に答える
0

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();
于 2013-03-27T07:20:31.133 に答える