0

aspx ページに 2 つの JavaScript 関数があります。一部の fabric.js 関数を使用します。

function saveCanvas() {
    js = JSON.stringify(canvas.toDatalessJSON());
    $get('<%= txtJSON.ClientID%>').value = js;

}
function loadCanvas() {
    js = $get('<%= txtJSON.ClientID%>').value;
    canvas.clear();
    canvas.loadFromDatalessJSON(js);
    canvas.renderAll();
}

コードビハインドでは:

 Protected Sub SaveJSON()
    Dim scriptKey As String = "123"
    Dim javaScript As String = "<script type='text/javascript'>saveCanvas();</script>"
    ClientScript.RegisterStartupScript(Me.GetType(), scriptKey, javaScript)
 End Sub

Protected Sub LoadJSON()
    Dim scriptKey As String = "456"
    Dim javaScript As String = "<script type='text/javascript'>loadCanvas();</script>"
    ClientScript.RegisterStartupScript(Me.GetType(), scriptKey, javaScript)
End Sub

ここで私の質問: saveCanvas が機能しないのに loadCanvas が機能するのはなぜですか? txtJSON には JSON 文字列が取り込まれません。aspx ページから saveCanvas 関数を呼び出すと、正常に機能します。

4

1 に答える 1

0

問題は、ポストバックが完了した後に呼び出しsaveCanvas、その時点でキャンバス データがなくなっていることです。

「保存」ボタンがある場合は、saveCanvasクリックされたときに呼び出して、ブラウザがページをサーバーに戻す前にデータが保存されるようにする必要があります。

<asp:Button runat="server" Text="Save" OnClickClick="saveCanvas()" />
于 2013-03-20T11:41:55.247 に答える