如何在Angularjs中编码String?

时间:2014-10-01 10:36:02

标签: java javascript angularjs spring spring-mvc

我使用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中编码问号? 感谢

2 个答案:

答案 0 :(得分:8)

Javascript具有用于此目的的特殊功能encodeURIComponent

  

encodeURIComponent会转义除以下内容之外的所有字符:   字母,十进制数字, - _。 ! 〜*'()

虽然encodeURI也不会对; , / ? : @ & = + $ #个字符进行编码。

答案 1 :(得分:4)

使用encodeURIComponent

检查this小提琴。

var a = "wo?d";
alert(encodeURIComponent(a));

针对角度特定的外观this SO回答。

还有一些问题然后发布给我。