繁体   English   中英

在Ajax 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM