![](/img/trans.png)
[英]Escaping forward slash in javascript when passing parameters to the url
[英]Escaping a forward slash / for variable in Ajax URL
我正在使用现有代码通过Ajax发送到给定的URL来验证用户的提交:
var url = '/foo/bar/' + valuea + '/' + valueb + '/' + valuec;
然后通过ajax发送:
$.ajax({
type : 'GET',
url : url,
// data : data,
success : function(response)
{...
}
});
问题出在用户输入包含正斜杠时,例如:
valuec = ABC/DEF
然后,URL定义为:
/far/bar/{valuea}/{valueb}/ABC/DEF
这导致了完全不同的URL结构和404。
有没有一种方法可以使该值转义以维持所需的URL结构?
我试过像replace(/\\//, '\\/');
以及encodeURIComponent()
但无济于事。
我目前的想法是一种解决方法,将用户提交的数据中的任何'/'重写为其他内容(例如|),以便我可以将其解析为URL,然后在返回时重新进行调整,但这有点麻烦恕我直言。
提前致谢
encodeURIComponent
将起作用。 小提琴
valuea = 1; valueb = 2; valuec = "ABC/DEF"; var url = '/foo/bar/' + valuea + '/' + valueb + '/' + encodeURIComponent(valuec); document.write(url+'<br/>');
您可以将值作为查询字符串参数传递
var url = "/foo/bar/?valuea=" + valuea + "&valueb=" + valueb + "&valuec=" + valuec;
感谢您的答复。 不幸的是,由于预建的限制,我无法修改URL结构,并且encodeURIComponent无法在以下环境中工作:
$.ajax({
type : 'GET',
url : url,
所以,取而代之的是我选择了replace方法...!
valuec = valuec.replace(/\//g, '|||');
因此,它可以正确解析到API,然后,我将它们交换回去。
干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.