2013-03-27 56 views
4

重定向到home.html頁面後,我可以看到我在前一頁中給出的查詢字符串值。獲取查詢字符串值並將其顯示在我的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>"); 
+1

我們可以看到你的代碼? – rab 2013-03-27 07:19:05

+0

@VenilAravazhi:請編輯將該代碼添加到您的問題。 – KooiInc 2013-03-27 07:21:47

+0

[如何通過javascript獲取查詢字符串?]可能的重複(http://stackoverflow.com/questions/2907482/how-to-get-the-query-string-by-javascript) – hjpotter92 2013-03-27 07:22:10

回答

5

裏面的功能function getParams()你聲明的變量var params = new Array();,我覺得這讓您感到困惑

如果找到匹配項,您分配的url參數像params[nameVal[0]] = nameVal[1];,thi實際上並沒有爲數組對象增加值。所以params.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; 
} 
+0

因此得到相同的結果。我只是簡單地在這個頁面顯示這些值 – 2013-03-27 09:13:01

+0

@VenilAravazhi沒有試過'firstname = unescape(params [「FirstName」]);',它區分大小寫 – rab 2013-03-27 09:17:26

+0

而不是使用console.log(i,params [i]); ,使用document.write(i,「=」+ params [i] +「
」);.現在它的工作正常。你的代碼對我來說非常有用。非常感謝你。 – 2013-03-27 09:31:45

0

您可以從location.search轉換查詢字符串使用-string到JS對象:

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(); 
+0

如何打印對象中的值? – 2013-03-27 08:53:11

+0

任何你喜歡它的方式。例如。在你的情況'queryObj.FirstName'將包含FirstName的值 – KooiInc 2013-03-27 10:23:16

相關問題