允许来自HTML的Javascript函数中的撇号

时间:2015-11-23 05:19:57

标签: javascript jquery html ruby-on-rails

我想从下面的HTML中调用Javascript funnction:

 <button data-toggle="modal" onclick="load_data('<%= data.book.to_json %>')">Click</button>

这里data.book.to_json是我传递的JSON。

我的一个密钥包含像{"key": "value's"}这样的撇号值 这给了我一个错误:

  参数列表后

SyntaxError:missing)。

如果删除{"key": "value"}之类的撇号,那么它就可以了。

而且,我想使用撇号。所以,请让我知道如何做到这一点。

我在JSON对象之前尝试使用\',但它不起作用。

4 个答案:

答案 0 :(得分:1)

喜欢这个?

<button data-toggle="modal" onclick="load_data(#{data.book.to_json})">

而且:

 <button data-toggle="modal" onclick='load_data("#{data.book.to_json}")'>

答案 1 :(得分:0)

您也许可以这样使用

JSON.stringify(data.book).replace(/'/g, "&#39;")

或可能是

data.book.to_json.replace(/'/g, "&#39;")

我没有尝试过后者。但我认为它会起作用。

希望它有所帮助!

答案 2 :(得分:0)

您可以尝试在Rails中等效的PHP addslashes功能。 它将在转义字符之前添加反斜杠,如单引号('),双引号(“),反斜杠()。

点击此处查看PHP addslashes

答案 3 :(得分:0)

我通过在模型中创建回调来解决错误:

after_find do
    self.comments = (self.comments.gsub("'","&#39"))
end

在获取记录时,它将用&amp;#39替换单引号。我只是在接受单引号的列中进行更改。 感谢所有宝贵的建议。