我使用Angularjs向我的服务器发送get http请求。服务器使用Spring MVC响应rest请求。这是我的角网址建筑上的代码段:
var name="myname";
var query= "wo?d";
var url = "/search/"+query+"/"+name;
这里是Spring MVC Controller:
@RequestMapping( value = "/search/{query}/{name}" , method = RequestMethod.GET , produces = MediaType.APPLICATION_JSON_VALUE )
@ResponseBody
public List<Data> search() {
// search logic
return data;
}
当查询包含问号字符(?)时,我遇到了问题。该URL被拆分,以便Spring响应: 警告o.s.web.servlet.PageNotFound - 找不到带有URI的HTTP请求的映射[/ my-server / web / search / wo在DispatcherServlet中,名称为'mvc'
这是正确的,因为问号?介绍请求参数的开头。
我试过使用js函数encodeURI(query)
,但问号字符没有编码。如何在url中编码问号?
感谢
答案 0 :(得分:8)
Javascript具有用于此目的的特殊功能encodeURIComponent
encodeURIComponent会转义除以下内容之外的所有字符: 字母,十进制数字, - _。 ! 〜*'()
虽然encodeURI
也不会对; , / ? : @ & = + $ #
个字符进行编码。
答案 1 :(得分:4)