获取完整路径,包括Node.js中的井号(#)

时间:2012-10-30 20:31:09

标签: javascript node.js

我正在使用Express在基于Node.js的服务器上工作。

用例: 用户应该能够通过使用以下URL进行HTTP 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中检索完整的 userID 值,而不管井号(#)是什么?

2 个答案:

答案 0 :(得分:1)

浏览器不会将哈希和所有内容发送到服务器。

答案 1 :(得分:1)

您需要URL编码userID以便以可在URL行传递的格式对字符串进行编码。

这在javascript中会是这样的:

var userId_encoded = encodeURIComponent(userId);