如何处理TYPO3中的大型json字符串

时间:2015-09-15 16:43:16

标签: json canvas fabricjs hidden-field typo3-6.2.x

我开发了一个小订单扩展,客户可以在其中设计名片。此扩展使用与fabric.js相关联的画布。

客户可以添加一些文本,简单的表单,图像等等,她的自定义结果是一个json字符串,我通过jquery绑定到一个隐藏的输入,将这些数据存储在属性 image 中表格提交时。

FLUID:

<f:form.hidden class="custom-image" property="image" />

JS:

$('.step3 .custom-image').val(getJsonOfCanvas());

HTML结果:

<input class="custom-image" type="hidden" name="tx_example_orderform[step3data][image]" value="{&quot;objects&quot;:[{&quot;type&quot;:&quot;rect&quot;,&quot;originX&quot;:&quot;left&quot;,&quot;originY&quot;:&quot;top&quot;,&quot;left&quot;:761,&quot;top&quot;:181,&quot;width&quot;:50,&quot;height&quot;:50,&quot;fill&quot;:&quot;#68e5e7&quot;,&quot;stroke&quot;:null,&quot;strokeWidth&quot;:1,&quot;strokeDashArray&quot;:null,&quot;strokeLineCap&quot;:&quot;butt&quot;,&quot;strokeLineJoin&quot;:&quot;miter&quot;,&quot;strokeMiterLimit&quot;:10,&quot;scaleX&quot;:1,&quot;scaleY&quot;:1,&quot;angle&quot;:0,&quot;flipX&quot;:false,&quot;flipY&quot;:false,&quot;opacity&quot;:0.8,&quot;shadow&quot;:null,&quot;visible&quot;:true,&quot;clipTo&quot;:null,&quot;backgroundColor&quot;:&quot;&quot;,&quot;fillRule&quot;:&quot;nonzero&quot;,&quot;globalCompositeOperation&quot;:&quot;source-over&quot;,&quot;transformMatrix&quot;:null,&quot;params&quot;:{&quot;base&quot;:1,&quot;x&quot;:761,&quot;y&quot;:181,&quot;scaleX&quot;:1,&quot;scaleY&quot;:1},&quot;rx&quot;:0,&quot;ry&quot;:0}],&quot;background&quot;:&quot;&quot;}">

因此,名片修改会增加此隐藏输入的价值 - &gt;很多修改=大json字符串。

在稍后的订单步骤中,客户可以检查和编辑她的条目,也可以再次编辑她的名片。出于这个原因,我使用相同的json字符串再次加载画布:

FLUID(有点棘手,因为它是内联js):

 <script type="text/javascript">
<![CDATA[var jsonCanvasString = ]]>
    <f:if condition="{step3data.image}">
        <f:then>
            <f:format.htmlentitiesDecode>{step3data.image}</f:format.htmlentitiesDecode>
        </f:then>
        <f:else>
            ''
        </f:else>
    </f:if>
<![CDATA[;]]>
</script>

JS:

if (typeof jsonCanvasString !== 'undefined') {
    canvas.loadFromJSON(jsonCanvasString, canvas.renderAll.bind(canvas));
}

当json字符串不是那么大时,这很有用,但是当它太长时我得到一个空白页面并且不会呈现任何内容,但是如果我调试我的图像属性,我可以看到该属性< strong>图片仍然设置:

enter image description here

有什么建议吗? 也许是否有更好的方法来存储json字符串并将其从js传递给php或从php传递给js?

希望你能帮助我:)。

0 个答案:

没有答案