Javascript和Remotipart-为什么单引号和双引号很重要

Javascript and Remotipart - Why does single quotes vs double quotes matter?

本文关键字:Remotipart- 为什么 单引号 Javascript      更新时间:2023-09-26

因此,在使用Remotipart远程上传文件时,我遇到了一个非常有趣的问题。我在update.js.erb视图中尝试了以下两个版本,服务器在成功上传文件后发送:

<%= remotipart_response do %>
    $("#container").html('<p>Success!</p><%= link_to('Back', gallery_items_path, :remote => true) %>');
<% end %>

<%= remotipart_response do %>
    $("#container").html("<p>Success!</p><%= link_to('Back', gallery_items_path, :remote => true) %>");
<% end %>

第一个版本成功地更改了#container中的标记,第二个版本失败,没有任何错误,无论是服务器端还是客户端。我认为单引号和双引号只是JSON运行时的问题,但我似乎错了。我还注意到Remotipart的例子只使用了单引号,我不确定这是否是故意的。

我使用的是Rails 3.2.1、Remotipart 1.0.2和(不确定这是否重要)Chrome 17。

有人知道是什么原因造成的吗?

编辑:回答亚历克斯的问题:

在第一种情况下,所呈现的输出如预期的那样:

<div id="container">
    <p>Success!</p>
    <a href="/gallery_items" data-remote="true">Back</a>
</div>

在第二种情况下,正如我所说,<div id="container">的内容没有变化。

link_to生成带有双引号的链接标记,并在javascript 中关闭引号

在第二种情况下传递给浏览器的实际js为;

$("#container").html("<p>Success!</p><a href="/gallery_items" data-remote="true">Back</a>");

外部字符串包含在"中作为其分隔符,但由于内容也包含",因此会中断。(x = "aa"bb"无效)。

前一个示例使用'分隔符,因此没有问题。

要使用",必须转义link_to的返回以生成

$("#container").html("<p>Success!</p><a href='"/gallery_items'" data-remote='"true'">Back</a>");