2012-10-30 115 views
0

我正在使用Express在基於Node.js的服務器上工作。在Node.js中獲取完整路徑,包括井號(#)

使用案例: 用戶應該能夠通過發送HTTP中檢索來自服務器的個人內容與以下URL GET:http://192.168.1.88:3000/content/[userID]

我已經定義的路線是這樣的:

app.get('/content/:userID', content.MyHandler); 

在「MyHandler」中,我可以讀取userID並將適當的數據返回給用戶。

問題是,當「userID」包含井號(#)時,我只能得到MyHandler中的#之前的內容,因此我無法找到誰是用戶。

所以如果userID是「123456」,一切都很好。但是,如果userID是「1234#567」,我只在MyHandler中獲得「1234」。

MyHandler的是這樣的:

exports.MyHandler = function(req, res){ 
    ... 
    var pathChunk = req.url.split("/"); 
    // sys.puts("--> Path in chunks: " + sys.inspect(pathChunk)); 
    // Nothing after # sign 
    var userID = pathChunk[2]; // Will be incomplete if contains # 
}; 

有沒有辦法中檢索MyHandler的中充分用戶ID值,無論磅(#)的標誌?

回答

1

您需要URL對userID進行編碼,以便可以在URL行上傳遞的格式對字符串進行編碼。

這在javascript會是這樣的:

var userId_encoded = encodeURIComponent(userId);
1

瀏覽器不會將哈希和所有內容發送到服務器。