jquery.data 返回 json 字符串而不是对象
jquery.data returning json string instead of object
我正在将 json 渲染到 html 数据属性中,并使用 jquery.data 读取该属性。我期望 $('[data-attribute]').data('attribute') 解析 json 和 return 一个对象,但它会间歇性地 returns 一个字符串。
location.html.erb
<div data-location="<%= render 'location_json' %>">
location_json.erb
<%= @location.to_json(
only: [:id, :name, :lat, :lng],
method: [:display_name]) %>
location.js
var location = $('[data-location]').data('location')
我怀疑 encoding/escaping 有问题,有什么想法吗?
ERB 间歇性地添加换行符,导致 json 字符串 jquery.data 无法解析。例如,正确解析的是:
<div data-location="{name":"Bandido's"}">
但这并没有(注意换行符后面的双引号):
<div data-location="
{name":"Bandido's"}
">
要防止 ERB 添加换行符,请在结束 ERB 标记前添加破折号
-%>
解决方案:
<div data-location="<%= render 'location_json' -%>">
我正在将 json 渲染到 html 数据属性中,并使用 jquery.data 读取该属性。我期望 $('[data-attribute]').data('attribute') 解析 json 和 return 一个对象,但它会间歇性地 returns 一个字符串。
location.html.erb
<div data-location="<%= render 'location_json' %>">
location_json.erb
<%= @location.to_json(
only: [:id, :name, :lat, :lng],
method: [:display_name]) %>
location.js
var location = $('[data-location]').data('location')
我怀疑 encoding/escaping 有问题,有什么想法吗?
ERB 间歇性地添加换行符,导致 json 字符串 jquery.data 无法解析。例如,正确解析的是:
<div data-location="{name":"Bandido's"}">
但这并没有(注意换行符后面的双引号):
<div data-location="
{name":"Bandido's"}
">
要防止 ERB 添加换行符,请在结束 ERB 标记前添加破折号
-%>
解决方案:
<div data-location="<%= render 'location_json' -%>">