Как избежать перевода "&" в "&" - PullRequest
0 голосов
/ 01 апреля 2020

У меня проблема с переводом «&» в «&» в URL.

Когда моя система запрашивает API у другой системы, моя система отображает ответы API с новой вкладкой.

Ответ - это URL-адрес, который содержит два значения, разделенных &

. В URL-адресе & передается &, что вызывает проблему в моей системе.

Пример URL-адреса в прикрепленном image введите описание изображения здесь

Правильный 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);
});

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Вы должны использовать encodeURIComponent и decodeURIComponent методы:

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"

надеюсь, что это помощь.

0 голосов
/ 02 апреля 2020

Я бы попробовал HTML декодирование на стороне сервера, но я предполагаю, что это данные от стороннего сервера. С JavaScript на стороне клиента вы всегда можете попробовать что-то вроде этого:

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