2017-07-06 32 views
0

因此,我從AJAX中的API請求獲取了此地址7 rue la Tour d'Auvergne顯示時字符「d」變爲「d '」

但是,當我將其提供給輸入在我看來甚至只是顯示它這樣

get_adress.js.erb

alert('<%= @sellsy_address.address %>') 
$('#address').val('<%= @sellsy_address.address unless @sellsy_address.blank? %>'); 

我得到這個7 rue la Tour d&#39;Auvergne

任何想法我如何設法保持d'的原樣?我試圖用不同的方式對它進行編碼或解碼,但沒有結果。

在此先感謝

編輯

如果我使用html_safe的原料,我js.erb只是不加載在所有再

+0

嘗試'unescape()'? –

+0

你試過unescape嗎? https://www.w3schools.com/jsref/jsref_unescape.asp –

+0

可能重複[在erb模板中禁用HTML轉義](https://stackoverflow.com/questions/4699497/disable-html-escaping-in-erb-模板) – Andreas

回答

2

嘗試使用html_safeescape_javascript(或j)沿,像這樣:

alert('<%= j @sellsy_address.address.html_safe %>'); 

或者,你可以跳過j但改變單引號雙引號,像這樣:

alert("<%= @sellsy_address.address.html_safe %>"); 

如果我使用html_safe的原料,我js.erb只是不加載在所有再

這是因爲由於7 rue la Tour d'Auvergne中的'位於單引號內,因此會出現語法錯誤。檢查下面的例子;

單引號,沒有escape_javascript(或j

alert('<%= @sellsy_address.address.html_safe %>'); 

//generated code: 
alert('7 rue la Tour d'Auvergne'); 

正如你所看到,警報獲取字符串'7 rue la Tour d',然後期望一個右括號()),所以你得到一個錯誤的無警報顯示。

單引號,用escape_javascript(或j

alert('<%= j @sellsy_address.address.html_safe %>'); 

//generated code: 
alert('7 rue la Tour d\'Auvergne'); 

現在'已經逃了出來,不再是一個封閉的報價,所以正確顯示警報。

雙引號,沒有escape_javascript(或j

alert("<%= @sellsy_address.address.html_safe %>"); 

//generated code: 
alert("7 rue la Tour d'Auvergne"); 

這次',需要的不是逃避,因爲用戶用雙引號引起來(「」,「」),這避免了與單引號的任何衝突( ')。

+0

它的工作原理!沒有j,我的js.erb甚至沒有加載,警報也不會彈出。 j代表什麼? – LRP

+0

@LRP檢查已更新的答案以澄清您的問題。 – Gerry

+0

明白了。感謝您花時間澄清。 – LRP

相關問題