在jQuery中获取Model jSignature属性 - Laravel

时间:2017-01-04 15:45:01

标签: jquery laravel

我想在jQuery中获取模型(Offer)签名,如果我只提醒模型它可以正常工作

alert( JSON.stringify(<?php echo $offer; ?>) );

但是当我想获得这样的$ offer-&gt;签名时

alert( JSON.stringify(<?php echo $offer->signature; ?>) );

我收到控制台日志错误:

参数列表之后

SyntaxError:missing)

如何获得该模型属性?

这是签名的价值:

data:image/svg+xml,<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="273" height="111"><path stroke-linejoin="round" stroke-linecap="round" stroke-width="3" stroke="rgb(51, 51, 51)" fill="none" d="M 148 1 c -0.31 0 -13.32 -0.67 -18 0 c -1.1 0.16 -1.9 2.84 -3 3 c -4.68 0.67 -12.04 -0.25 -18 0 c -2.02 0.08 -4.15 0.45 -6 1 c -1.36 0.41 -2.7 1.71 -4 2 c -1.46 0.32 -3.39 -0.27 -5 0 c -6.26 1.04 -12.71 3.16 -19 4 c -3.56 0.48 -7.58 -0.51 -11 0 c -2.95 0.44 -6.07 2.45 -9 3 c -2.16 0.41 -5.05 -0.39 -7 0 c -1.01 0.2 -1.96 1.82 -3 2 c -4.04 0.71 -9.96 0.29 -14 1 c -1.04 0.18 -1.93 1.6 -3 2 c -4.05 1.52 -9.49 1.9 -13 4 c -4.2 2.52 -8.28 7.28 -12 11 c -0.82 0.82 -1.86 1.98 -2 3 c -0.45 3.38 -1 9.01 0 12 c 0.7 2.11 3.78 4.52 6 6 c 3.51 2.34 8.2 4.73 12 6 c 1.7 0.57 4.15 -0.37 6 0 c 2.92 0.58 5.99 2.43 9 3 c 3.83 0.73 8.36 0.32 12 1 c 1.35 0.25 2.65 1.75 4 2 c 3.64 0.68 8.24 0.34 12 1 c 1.68 0.3 3.34 1.95 5 2 c 18.45 0.57 40.82 1.84 60 0 c 11.24 -1.08 22.67 -6.64 34 -9 c 4.52 -0.94 9.96 -0.29 14 -1 c 1.04 -0.18 1.96 -1.85 3 -2 c 5.19 -0.74 12.56 -0.26 18 -1 c 1.35 -0.18 2.65 -1.83 4 -2 c 6.04 -0.75 19.69 -1.16 20 -1 c 0.28 0.14 -12.46 0.99 -18 2 c -1.37 0.25 -2.65 1.85 -4 2 c -6.94 0.77 -15.58 0.26 -23 1 c -2.35 0.23 -4.65 1.71 -7 2 c -5.5 0.69 -11.86 0.27 -17 1 c -1.35 0.19 -2.65 1.73 -4 2 c -3.34 0.67 -7.49 0.3 -11 1 c -3.02 0.6 -6.08 2.42 -9 3 c -1.85 0.37 -4.33 -0.37 -6 0 c -1 0.22 -1.96 1.74 -3 2 c -2.61 0.65 -6.21 0.3 -9 1 c -2.34 0.59 -4.75 2.44 -7 3 c -1.48 0.37 -3.53 -0.43 -5 0 c -3.82 1.12 -8.25 3.13 -12 5 c -1.44 0.72 -2.9 1.9 -4 3 c -0.8 0.8 -1.78 2 -2 3 c -0.37 1.67 -0.48 4.4 0 6 c 0.4 1.33 1.85 2.85 3 4 c 1.79 1.79 3.85 3.92 6 5 c 3.49 1.74 8.24 2.5 12 4 c 1.07 0.43 1.96 1.85 3 2 c 5.19 0.74 12.81 0.26 18 1 c 1.04 0.15 1.96 1.79 3 2 c 3.47 0.69 7.9 0.94 12 1 c 18.4 0.28 35.91 0.52 54 0 c 5.07 -0.15 10.13 -0.98 15 -2 c 3.05 -0.64 6.08 -2.42 9 -3 c 1.85 -0.37 4.33 0.37 6 0 c 1 -0.22 1.92 -1.59 3 -2 c 5.68 -2.16 12 -4.45 18 -6 c 2.86 -0.74 6.19 -0.18 9 -1 l 22 -8"/></svg>

我正在使用这个jQuery插件http://www.unbolt.net/jSignature/而且我不知道如何从DB获取签名。它应该是这个命令

$("#signature").jSignature("importData",dataurl);

但是在该页面上它只有在dataurl是图像base30时才有效

image/jsignature;base30,6RZ76663546536375366634210000Y2233424546656697536345453331Z734333321210Y14234653675991K53463542331215333666643333323132121_2u030120310212312333345456763353331231000000Z2213233342340Y233323343665432331210200Z91233343336545Y1323100Z232342436534654

但我有一个svg类型。也许如果我将它改为base30它会工作? 如果有人有更多经验,请帮助。

更新

我终于解决了问题

我不得不从签名中更改getData:

$("#canvas").jSignature("getData", "svg");

到这个

$("#canvas").jSignature("getData");

现在我得到了可以加载到简单标签的base64 png图像

我有这个jQuery代码来获取DB的签名

@if (isset($offer->signature))
    $("#canvas").jSignature("importData", "{{$offer->signature}}");
@endif

我已经解决了我必须加载base30压缩器.js库的所有内容,现在我可以将签名保存到数据库中,并且它不会太大并再次加载进行编辑。

2 个答案:

答案 0 :(得分:2)

$ offer-&gt;签名的价值是什么?

如果是一个字符串,你必须把像Alexey Menezin这样的引号说

alert(JSON.strigify("<?php echo $offer->signature; ?>"));

所以,输出将是:

alert(JSON.stringify("some string"));

javascript就像:

alert(JSON.stringify(some string));

然后会抛出错误

答案 1 :(得分:1)

如果属性是字符串或数字,请尝试:

alert("<?php echo $offer->signature; ?>");

或者,如果你正在使用Blade:

alert("{!! echo $offer->signature !!}");

另外,用PHP创建JS是个坏主意,你应该避免使用它。