使用Ajax发送后,PNG Data Url已损坏

时间:2017-04-25 09:13:47

标签: javascript json ajax encoding digital-signature

我想将带有Ajax的PNG数据URL发送到我的PHP脚本,但客户端的Url与我使用PHP的内容不同。

$.ajax({
        url: "proceed.php",
        type: "post",
        data: "signature=" + signaturePad.toDataURL('image/png'),
        error: function(e) {
            alert("ERROR");
            console.log(e);
        },
        success: function(e) {
            alert(e);
        }
});

我认为它在发送时会受损 - 可能是编码问题?

我已经尝试使用JSON对URL进行编码,但问题是同样的......

data: "singature=" + JSON.stringify(signaturePad.toDataURL("image/png")

1 个答案:

答案 0 :(得分:0)

我认为您使用的是HTML5&{39} as described here

您的图片数据不一样,因为您不是发送实际图片,而是发送您网站上绘制的图片数据。

由于浏览器丢弃了不需要的数据并且(可能)仅保留RGBA和大小信息,因此您收到的图像可以理解为“损坏”。文档还指出图像分辨率始终 96 dpi。

使用URI组件传输"二进制数据"也可能会出现问题。 (这些引用应该是巨大的)。似乎没有设置URI组件的下限或上限,如here所述。我建议仅在小型(IMHO约40x40px)图像的情况下使用此技术。

请参阅here,了解如何通过jQuery&{39} column.separate = c(2, 1), column.labels = c("option a", "option b")发送更大的图片。