Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 参数列表后的JSON:Uncaught SyntaxError:missing)_Javascript_Ruby On Rails_Json_Ruby - Fatal编程技术网

Javascript 参数列表后的JSON:Uncaught SyntaxError:missing)

Javascript 参数列表后的JSON:Uncaught SyntaxError:missing),javascript,ruby-on-rails,json,ruby,Javascript,Ruby On Rails,Json,Ruby,在rails应用程序中,我在控制器中定义了一个对象,其中包含一个图标和一些值: @data = "<i class='fa fa-circle fa-lg'></i><span>Speed: </span> #{b.speed.to_f} | Time: #{b.gps_date.try(:strftime, '%-m/%e %H:%M')}} <br />".html_safe.to_json 当我删除包含类的单引号的图标代码时,我

在rails应用程序中,我在控制器中定义了一个对象,其中包含一个图标和一些值:

@data = "<i class='fa fa-circle fa-lg'></i><span>Speed: </span> #{b.speed.to_f} | Time: #{b.gps_date.try(:strftime, '%-m/%e %H:%M')}} <br />".html_safe.to_json
当我删除包含类的单引号的图标代码时,我可以正常工作

<i class='fa fa-circle fa-lg'></i>


如何修复此错误?

您希望将HTML字符串发送到JS,因此需要将
转换为\u json
,因为这用于将
哈希
转换为
json
。所以只需在服务器端使用
html\u-safe

在客户端,由于您拥有字符串中的所有HTML,不需要将
作为_json
,只需像在JS中一样使用字符串即可
as_json
是一种用作ActiveRecord序列化程序的方法

@data = "<i class='fa fa-circle fa-lg'></i><span>Speed: </span> #{b.speed.to_f} | Time: #{b.gps_date.try(:strftime, '%-m/%e %H:%M')}} <br />".html_safe
@data=“速度:{b.Speed.to_f}时间:{b.gps_date.try(:strftime,%%-m/%e%H:%m')}

var数据=;

基本上,这似乎是一个问题,在
JSON.parse(“…”)
中的某个地方出现了一个未跳过的
。您可以通过查看呈现页面的HTML来验证问题

我认为您可以通过声明(此处不需要
.to_json
)来解决您的问题:

@data=“速度:{b.Speed.to_f}时间:{b.gps_date.try(:strftime,%%-m/%e%H:%m')}
然后在视图中使用

var data = "<%= escape_javascript @data %>";
var数据=”;
由于您只是尝试传递一个字符串,因此无需将其转换为JSON对象,然后再对其进行解析。(如果要传递整个Javescript对象/Ruby散列,就需要它)

实际上,最后一行还有一个等效的快捷方式/别名:

var data = "<%= j @data %>";
var数据=”;

PS:我描述了如何解决迫在眉睫的问题,但一般来说,MVC的要点是不需要(或至少要最小化)一个复杂的表示逻辑。一般来说,最好将数据传递给视图并在模板中生成HTML。

不是解决方案,只是想知道,为什么要使用
来表示json
作为json
?如果不使用这些方法,我会遇到同样的错误。实际上,我在JavaScript中使用了这个对象,所以我尝试了
到_json
,然后在jsit中解析了json。这看起来不像一个对象。我猜您正在尝试构建一个html节点并将其传递给JS,那么我想只有
'
应该可以工作。你试过了吗?你是对的。删除了所有json解析代码,只使用了原始@data。成功了。谢谢你的帮助,我会把这个作为答案贴出来,如果你愿意的话,你可以接受。是的,我的意思是。不需要解析为JSON,因为它是一个字符串。发布时忘记删除:)
var data = <%= raw @data %>;
@data = "<i class='fa fa-circle fa-lg'></i><span>Speed: </span> #{b.speed.to_f} | Time: #{b.gps_date.try(:strftime, '%-m/%e %H:%M')}} <br />".html_safe
var data = "<%= escape_javascript @data %>";
var data = "<%= j @data %>";