Javascript PNG数据Url在使用Ajax发送后损坏

Javascript PNG数据Url在使用Ajax发送后损坏,javascript,json,ajax,encoding,digital-signature,Javascript,Json,Ajax,Encoding,Digital Signature,我想用Ajax向我的PHP脚本发送一个PNG数据Url,但客户端的Url与我用PHP收到的不一样 $.ajax({ url: "proceed.php", type: "post", data: "signature=" + signaturePad.toDataURL('image/png'), error: function(e) { alert("ERROR"); console

我想用Ajax向我的PHP脚本发送一个PNG数据Url,但客户端的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")

我猜想您正在使用HTML5的
canvas.toDataUrl()

您的图像数据不同,因为您发送的不是实际图像,而是在站点上绘制的图像的数据

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

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

请参阅如何通过jQuery的
$.ajax()

尝试
encodeURI(uri)