javascript - 字符 "d' "becoming "d'”显示时

标签 javascript jquery ruby-on-rails character-encoding utf

所以我从 AJAX 中的 API 请求中获取了这个地址 7 rue la Tour d'Auvergne

但是当我将它提供给我的 View 中的输入时,甚至只是像这样显示它时

get_adress.js.erb

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

我得到了这个7 rue la Tour d'Auvergne

有什么想法可以让 d' 保持原样吗?我尝试用不同的方式对其进行编码或解码,但没有结果。

提前致谢

编辑

如果我使用 html_safe 的 raw,我的 js.erb 将不再加载

最佳答案

尝试将 html_safeescape_javascript(或 j)一起使用,如下所示:

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

或者,您可以跳过 j 但将单引号更改为双引号,如下所示:

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

If I use raw of html_safe, my js.erb just does not load at all anymore

这是因为,由于 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");

这次 ' 不需要转义,因为字符串用双引号 ('""') 括起来,这样可以避免与单引号 (') 发生任何冲突。

关于javascript - 字符 "d' "becoming "d'”显示时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44954832/

相关文章:

ruby-on-rails - bundle install 在通过 ansible playbook 安装私有(private) gem 时挂起

ruby-on-rails - 我如何设置 heroku postgresql 应用程序的路径?

ruby-on-rails - 无法启动我的 Rails 服务器 [linux]

javascript - Javascript 中 x === 0 或 x < 1,哪个更好? x < 1 是否包括类型检查?

javascript - 使用 FileTransfer 插件 Phonegap 在 Android 设备上保存 PDF 的位置

javascript - jquery ajax如何将整数作为变量发送到php

javascript - 从 css 类中删除 width 属性

javascript - 使用 jQuery 收集元素类数组

javascript - 分组和验证字段

javascript - iPad 上的 jQuery 单击事件无法正常工作