0

Railsアプリケーションを介してデータベースにデジタル署名を保存しようとしています。

署名を JSON 文字列に変換する JavaScript プラグインを使用しています。次に、params から JSON 文字列を取り出し、変数に格納します。ここで、抜き取った JSON 文字列をリバース JavaScript 関数に渡して、署名を再生成したいと考えています。

javascript の変数を直接 JSON 文字列に設定し、それを関数に渡すと、リバース関数は正常に機能します。ただし、変数をJSON文字列を格納するrails変数に割り当てると機能しません。JSON 文字列の値は、どちらの場合もまったく同じです。

最初のケースでは typeof var は obj.obj タイプを正しく表示しますが、2 番目のケースでは文字列として表示します。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はどういうわけか、最初のケースでは配列として認識せず、2番目のケースでは認識します...どうすれば修正できますか?

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%>;

そうすれば、ブラウザがそれを受け取ると、機能する 2 番目の例のようになります。

これは実際には JSON を使用していないことに注意してください。サーバー側のコードを使用して JS 配列リテラルを直接 JS コードに出力しているだけです。

于 2012-08-02T02:31:58.660 に答える
0

私の推測では、二重引用符で囲まれた sig への割り当てが問題を引き起こしていると思います - 一重引用符を試してください。

于 2012-08-02T02:35:12.877 に答える