2011-02-24 65 views
0

我于JavaScript/Node.js的,当我在做这个查询参数的HTTP请求:对使用​​HTTP请求发送的字符串进行编码?

?key="https://me.yahoo.com/a/xt4hQ7QYssA8hymJKv8MeVQQKGhq_1jwvas-#a6e6f" 

我得到一个错误,因为一切的IT部门后:

?key="https://me.yahoo.com/a/xt4hQ7QYssA8hymJKv8MeVQQKGhq_1jwvas- 

我想知道如何编码这个字符串,所以它不会将它切断?

回答

8

我假设你的URL末尾的散列(#)实际上是查询参数的一部分。问题是Node.js将它视为整个URL的散列,这对HTTP请求没有任何作用。因此,您需要正确编码查询字符串。

querystring.stringify这样的结构化API函数可能是最好的。

var query = querystring.stringify({ 
    key: '"https://me.yahoo.com/a/xt4hQ7QYssA8hymJKv8MeVQQKGhq_1jwvas-#a6e6f"' 
}); 
+2

或许你可以尝试:键= “https://me.yahoo.com/a/xt4hQ7QYssA8hymJKv8MeVQQKGhq_1jwvas-” + encodeURIComponent方法( “#a6e6f”); ? – 2011-02-24 03:02:03

+0

凯文·格尼:其实这很好! encodeURI和encodeURIComponent有什么区别? – ajsie 2011-02-24 03:08:19

+0

刚刚阅读了解释:http://stackoverflow.com/questions/75980/best-practice-escape-or-encodeuri-encodeuricomponent :)你应该把你的评论作为答案,所以我可以让它接受的。 – ajsie 2011-02-24 03:12:40

1

urlencode it。 ?

在Javascript:escape(string)

+2

'转义'不存在NodeJS上。在客户端JavaScript中,它被弃用,因为它不适用于非ASCII字符。改用“encodeURI”和“encodeURIComponent”。 – Husky 2011-08-24 18:44:38