0

我正在尝试通过 rails 应用程序将数字签名存储在数据库中。

我正在使用将签名转换为 JSON 字符串的 javascript 插件。接下来我从参数中提取 JSON 字符串并存储在一个变量中。现在我想通过将采摘的 JSON 字符串提供给反向 javascript 函数来重新生成签名。

如果我将 javascript 中的变量直接设置为 JSON 字符串并将其传递给函数,则反向函数可以正常工作。但是,当我将变量分配给存储 JSON 字符串的 rails 变量时,它不起作用。两种情况下 JSON 字符串的值完全相同。

在第一种情况下,typeof var 正确显示 obj.obj 类型,但在第二种情况下,它显示为字符串。我厌倦了使用 JSON 和 Jquery 解析的所有技巧,但它不起作用。

我的导轨控制器:

@recipient_signature = params[:recipient_signature]

我想查看使用 JSON 字符串生成的签名的视图。

  var sig = "<%=@recipient_signature%>";
    $(document).ready(function() {
      $('.sigPad').signaturePad({displayOnly:true}).regenerate(sig);
    });

即使 @recipient_signature 中的值是正确格式的 JSON 字符串,上述情况也不起作用。

但是当我将相同的 JSON 字符串分配给 sig 时,它可以工作......

var sig =  [{"lx":55,"ly":25,"mx":55,"my":24},{"lx":55,"ly":25,"mx":55,"my":25}....'];

此 JSON 字符串与 @recipient_signature 中的相同,并显示在<%=@recipient_signature%> correctly.

Javascript 在第一种情况下不会以某种方式将其识别为数组,而在第二种情况下会......如何修复它?

4

3 回答 3

0

您将 json 用引号括起来并使用 html 编码形式的变量:

var sig = "<%=@recipient_signature%>";

应该

var sig = <%=raw @recipient_signature%>;

或者你应该解析 json:

var sig = JSON.parse('<%=raw @recipient_signature%>');
于 2012-08-02T02:31:01.253 回答
0

删除引号。也就是说,改变:

var sig = "<%=@recipient_signature%>";

var sig = <%=@recipient_signature%>;

这样,当浏览器收到它时,它看起来就像您的第二个示例一样有效。

请注意,这并不是真正使用 JSON,它只是使用您的服务器端代码将 JS 数组文字直接输出到 JS 代码中。

于 2012-08-02T02:31:58.660 回答
0

我的猜测是您分配用双引号括起来的 sig 会导致问题 - 尝试使用单引号。

于 2012-08-02T02:35:12.877 回答