我的客户想要捕获表单数据和签名(使用signaturePad),我已经创建了一个带有ajax的解决方案但是我不能让这两个东西一起工作。
如果我发送图像数据:
var image = signaturePad.toDataURL();
$.ajax({
url: './test1.php',
type: 'POST',
data: { imageData: image }
})
结果正常,我可以稍后保存图像。 (仅发送图像数据,而不是表单数据)
但是当我尝试发送图像和表单数据时:
var image = signaturePad.toDataURL();
data = $('#form').serialize() + '&imageData=' + image;
$.ajax({
url: './test1.php',
type: 'POST',
data: data
})
图片已保存,但我以后无法打开,我认为发送图片的方式会导致一些错误。
如果我向控制台输出imageData变量,则第一个实验的结果是一个文本块,对于第二个实验,输出是一个文本块但不同,它有新的行字符,如。
最好的解决方案是使用第二个实验,因为我的表单有像输入一样的数组,逻辑编写并正常工作,但图像因某些未知原因而被破坏。任何帮助表示赞赏。
编辑:图像是base64编码的png。
答案 0 :(得分:2)
解决方案是在表单中使用serializeArray()然后按下' imageData' (base64图像)作为对象的数组:
f = str(f) + s
现在创建了图像并通过帖子发送没有任何问题!