2015-05-28 39 views
0

我明白我們是如何解析快遞路線的URL參數,如示例我們如何添加url參數? (EJS +節點+快遞)

How to get GET (query string) variables in Express.js on Node.js?

但你在哪裏的URL參數來自擺在首位?

編輯:

顯然,我可以建立與jQuery這樣的查詢(即$.get)。我可以將params附加到此查詢對象。這很酷,但我仍然試圖瞭解如何在查詢中實現這一點,從而將頁面呈現爲整體。

一個例子:當我選擇下面的最古老選項卡,請問所以加?answertab=oldest的URL,這樣就變成:

https://stackoverflow.com/questions/30516497/how-do-we-add-url-parameters-ejs-node-express?answertab=oldest#tab-top

+0

您的意思是如何在瀏覽器中添加請求參數或者如何將它添加到節點中以請求其他服務器的內容?他們幾乎但不完全相同。瀏覽器增加了您希望作爲查詢參數傳遞的數據來自哪裏的複雜性。 – slebetman

+0

@slebetman用一個例子編輯了這個問題,我認爲它現在更清晰了。謝謝! –

+1

對於你問到的SO例子,答案很簡單。完整的字符串只包含'「?answertab =最古老的」'。換句話說,該標籤在源文件中看起來像這樣:'oldest'。真的沒有什麼特別的。這只是一個字符串 – slebetman

回答

1

頁面的作者這樣寫。這就是他們「如何擺在首位」。 HTML頁面的作者決定(或者由網站設計者告知)當用戶點擊其上的特定錨點元素時將用戶帶到哪裏。 如果他們希望用戶使用GET這個帶有一些查詢參數(它們的服務器處理的參數)的頁面,他們只需將其選擇的查詢字符串添加到鏈接的href屬性中。

看看你點擊最古老標籤的href屬性:

<a 
class="youarehere" 
href="https://stackoverflow.com/questions/30516497/how-do-we-add-url-parameters-ejs-node-express?answertab=oldest#tab-top" 
title="Answers in the order they were provided" 
> 
oldest 
</a> 

當你點擊它,瀏覽器簡單地把你在href屬性/questions/30516497/how-do-we-add-url-parameters-ejs-node-express?answertab=oldest#tab-top相關指示給基URL路徑http://stackoverflow.com。所以地址欄改變了。

stackoverflow.com可能有自己的系統生成動態HTML頁面。他們的管理員和頁面作者已經配置了他們的服務器來處理特定的查詢參數,並且放置了自己的方法來確保他們頁面上的鏈接指向他們希望的URL(包括查詢字符串)。

您需要提供包含您選擇的查詢字符串的URI(您可以使用url.formatquerystring.stringify將它們構建到您的模板系統進行呈現)。然後讓你的快遞路線處理它們並根據它們的價值生成頁面。

3

你正在尋找的字符串是一個序列化表單值的值,或其他一些輸入數據的方法。要了解這一點,請看看jQuery's built in .serialize() method

您也可以手動構建該字符串,這也很簡單。該格式只是?var1=data1&var2=data2等,如果你有一個JSON對象{"name": "Tim", "age": 22},那麼你可以寫一個很簡單的功能序列化此對象:

function serializeObject(obj) { 
    var str = "?"; 
    for(var i = 0; i < Object.keys(obj).length; i++) { 
     key = Object.keys(obj)[i]; 
     if (i === Object.keys(obj).length - 1) 
      str += encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]); 
     else 
      str += encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]) + "&"; 
    } 
    return str; 
} 

運行seralizeObject({"name": "Tim", "age": 22})將輸出'?name=Tim&age=22'。這可以用來生成一個鏈接或什麼。

+0

謝謝,非常有幫助! :) – ghuroo