@在传入URL时被转换为字符串

时间:2016-12-19 09:07:40

标签: jquery urlencode window.open

我正在尝试通过HTTP请求将数据发布到网址,当我尝试传递电子邮件时,它会将 @ 转换为%252540

以下是网址:

window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=amrinder@odz.com');

请看看给定的小提琴:

https://jsfiddle.net/amrindernoor/b8uvwr86/

如何避免此问题?

3 个答案:

答案 0 :(得分:4)

您的网址https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=amrinder@odz.com有多个内部重定向。

在每次重定向中,它都会对已编码的电子邮件进行编码。

以下是对导致问题的确切原因的简要说明:

  

首先,@按原样传递。

     

在第一次重定向期间,它被编码为%40,仍然有效。

     

在每次重定向之后,它再次被编码,导致%252540作为最终值。

下面的屏幕截图将为您提供关于此

的清晰图片

enter image description here

答案 1 :(得分:0)

使用encodeURIComponent作为电子邮件地址参数:

window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=' + encodeURIComponent('amrinder@odz.com'))

email参数的正确值(由encodeURIComponent返回)是˙amrinder%40odz.com˙,它将被解释为amrinder@odz.com服务器端。

更改后,该网址会返回302重定向到https://www.rsptrack.com/click.track?CID=287283&AFID=276422&SID=rentown&SID2=n&SID3=n&email=amrinder%40odz.com&zid=f197f1cfb16ae7d56748bca35ebe7658&tkp=3428&tku=4160&tks=86073803,这似乎包含电子邮件参数的正确值。

答案 2 :(得分:0)

您可以使用encodeURIComponent()功能完成此操作。此功能对特殊字符进行编码。此外,它还会对以下字符进行编码:, / ? : @ & = + $ #

window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=' + encodeURIComponent('amrinder@odz.com'))

注意:

  

使用decodeURIComponent()函数解码编码的URI   成分