数字符号/哈希符号(#)中断代码

时间:2016-11-26 04:31:08

标签: amazon-web-services

有人创建了一个网页,从eventbrite中提取事件数据,将其写入SVG,使用Amazon Web服务,并将其保存为PDF以创建传单。

它适用于:www.ilovemylaser.com/fliers.html。

但是,如果我使用'#'在地址栏中,它打破了,所以对于圣地亚哥人来说,我已经取代了#'#'与' No。'。

如果你查看www.admaticonsulting.com/resources/fliers2.html,我已经使用了#2'。如果单击飞行器,您将看到缺少城市,地点名称,时间,状态和邮编。与第一个链接的Thousand Oaks传单相比较。

此行在代码中,我很确定这是问题所在:

var output = "<p><a href=\"h t t p ://ec2-52-42-194-56.us-west-2.compute.amazonaws. com/task.php?date=" + date + "&staddress=" + venue + "&venue=" + ven3 + "&city=" + city + "&region=" + region + "&postal_code=" + postal_code +"&time="+ time + "\">" + date + " - " + city + "</a><br></p>";

现在我无法发布超过2个链接,但如果您点击任何传单链接,您会看到它会显示一个链接,然后解析为其他链接。

非常确定#正在影响这一点。此外,&#34;已解决的链接中有空格&#34;那些有&#39;#&#39;。那些没有空格的空格没有。

如何使用#并且没有丢失数据?

2 个答案:

答案 0 :(得分:1)

您需要使用encodeURIComponent对每个查询字符串值进行编码:

var output = "<p><a href=\"h t t p ://ec2-52-42-194-56.us-west-2.compute.amazonaws. com/task.php?date=" + encodeURIComponent(date) + "&staddress=" + encodeURIComponent(venue) + "&venue=" + encodeURIComponent(ven3) + "&city=" + encodeURIComponent(city) + "&region=" + encodeURIComponent(region) + "&postal_code=" + encodeURIComponent(postal_code) +"&time="+ encodeURIComponent(time) + "\">" + date + " - " + city + "</a><br></p>";

答案 1 :(得分:0)

URL中的#开始Fragment Identifier,由浏览器或其他客户端在本地处理;它不包含在发送到服务器的HTTP请求中,因此不能用于服务器上的任何处理。 To include a 'reserved' character as data in a URL you must encode it。请注意,链接为https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters,当您点击该链接时,从服务器获取的页面为https://en.wikipedia.org/wiki/Percent-encoding,然后您的浏览器会定位到Percent-encoding_reserved_characters的锚标记。