我正在使用现有代码,通过Ajax发送到给定的URL来验证用户的提交:
AuthGuard
然后通过ajax发送:
var url = '/foo/bar/' + valuea + '/' + valueb + '/' + valuec;
问题在于用户输入包含正斜杠,例如:
$.ajax({
type : 'GET',
url : url,
// data : data,
success : function(response)
{...
}
});
然后,网址定义为:
valuec = ABC/DEF
这会产生完全不同的网址结构和404。
有没有办法可以转义此值以维护所需的网址结构?
我尝过了/far/bar/{valuea}/{valueb}/ABC/DEF
和replace(/\//, '\/');
之类的内容,但都没有帮助。
我目前的想法是将用户提交的数据中的任何'/'重写为其他内容(例如|)的解决方法,以便我可以将其解析为URL,然后在返回时重新调整它,但这有点像一个混乱的解决方案imho。
提前致谢
答案 0 :(得分:2)
encodeURIComponent
将有效。FIDDLE
valuea = 1;
valueb = 2;
valuec = "ABC/DEF";
var url = '/foo/bar/' + valuea + '/' + valueb + '/' + encodeURIComponent(valuec);
document.write(url+'<br/>');
&#13;
答案 1 :(得分:0)
您可以将值作为查询字符串参数传递
var url = "/foo/bar/?valuea=" + valuea + "&valueb=" + valueb + "&valuec=" + valuec;
答案 2 :(得分:0)
感谢您的回复。不幸的是由于预先构建的限制,我无法修改URL结构,并且encodeURIComponent不起作用:
$.ajax({
type : 'GET',
url : url,
所以,我已经选择了替换方法......!
valuec = valuec.replace(/\//g, '|||');
因此它正确地解析了API,然后在那时我将它们交换回来。
干杯