Nodejs不能获取到url末尾的#号的问题,请问有什么办法可以解决?
发布于 8 年前 作者 xsTao 4697 次浏览 来自 问答

可能标题没说清楚,我从数据库中获取标签,如js、c#等,然后在页面上生成一个链接,如http://localhost:3000/categories/C# 那么点击这个链接,用req.params得到的值是“C”,有什么办法能够取得这个“C#”吗? 我的想法是在取得这些标签的时候就检查标签中是否有这样的特殊字符,并用别的字符代替,但是特殊字符有很多,感觉处理起来麻烦, 不知道这样的思路可行不?有什么好的解决办法?在此先谢过了~~

13 回复

用csharp 锚点符号后面的内容不会回传到服务器,这个是标准约定,浏览器都是这么实现的和node.js没有关系 其它语言也获取不到

@simongfxu 嗯嗯,确实获取不到。但是这个是从数据库中传来的,要怎么处理比较好呢?

url有规范的,看rfc吧😁

数据如何可以异步加载的花 前端请求后把C# 发送给后端异步回调 可行?

@cupyong 问题就是请求以后只能获取到C 而得不到C#

@chenxiaohu 小白一只,rfc是什么,Request For Comments?

将url encode一下,encodeURIComponent(‘c#’)

@carlisliu 谢谢,这个方法简单好用!!先对链接encodeURIComponent,后台取数据时再decodeURIComponent一下就好了~

@xsTao 就是说明http里面url,参数,头信息等等有什么要求的规范。encodeURIComponent是啥意思,搞清楚原因就解决了各种传参及乱码问题

@xsTao 在前端中获取到C# 后 然后 ajax 传输到后台 我的是这个意思

@cupyong 哦哦,用ajax啊,确实也是很好的一个思路,谢谢!

哎,还用 ajax !!??
7楼的就是正解了。query 的 key 和 value 一定要 encode,正确处理后,包括#?=空格等等特殊字段都可以传!

@klesh 发现好多地方都没encode,这次是长记性了,谢谢提醒!

回到顶部