避免将“&”转换为“&amp”

Avoiding transfer ”&” to ”&amp”

我在 URL 中将“&”转换为“&”时遇到问题。

当我的系统从另一个系统请求 API 时,我的系统会在新选项卡中显示 API 响应。

响应是一个 URL,包含两个由 &

分隔的值

URL 中的 & 被转移到 &,它导致我的系统出现问题。

URL 附图中的示例 enter image description here

右边URL应该是xxxxxxrid=1182&eid=25

后端代码

def url_with_params(reservation_id)

"#{self.url}?rid=#{reservation_id.to_s}&eid=#{self.id.to_s}"

 #URL ex: https://XXXXXXXXXXXX?rid=1184&eid=1. 

end

客户端代码

$(document).on("click", '.dev-submit-instructions-agreement', function(){
    window.open("<%= @exam.url_with_params(@reservation.id) %>", 'newwindow', 'width='+screen.width+', height='+screen.height);
});

您必须使用 encodeURIComponentdecodeURIComponent 方法:

const  encodedURL = encodeURIComponent('https://example.net?id=1182&eid=25');
// "https%3A%2F%2Fexample.net%3Fid%3D1182%26eid%3D25"

恢复初始URL:

const url = decodeURIComponent(encodedURL); 
// "https://example.net?id=1182&eid=25"

希望对您有所帮助。

我会尝试 HTML 在服务器端解码,但我假设这是来自第三方服务器的数据。使用 JavaScript,在客户端,您总是可以尝试这样的操作:

x='some data';
x=x.replace(/&amp;/g,"&");
window.location=x;