Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax base64字符串无法成功运行_Javascript_Php_Ajax_Canvas_Base64 - Fatal编程技术网

Javascript Ajax base64字符串无法成功运行

Javascript Ajax base64字符串无法成功运行,javascript,php,ajax,canvas,base64,Javascript,Php,Ajax,Canvas,Base64,我每隔几秒钟从画布生成一个base64字符串: function generateImg(start) { startInterval = setInterval(function() { saveBase64StringAjax(canvas.toDataURL()); }, 1000); } function saveBase64StringAjax(imgData) { $.ajaxSetup({ headers: {

我每隔几秒钟从画布生成一个base64字符串:

function generateImg(start) {

    startInterval = setInterval(function() {
       saveBase64StringAjax(canvas.toDataURL());
    }, 1000);

}


function saveBase64StringAjax(imgData) {
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    $.ajax({
        url: 'postStream',
        type: 'post',
        data: imgData,
        success:function(data) {
            console.log(data);
        }
    });
}
如果我从console.log(canvas.toDataURL())复制数据并将其粘贴到这里,我会得到正确的图像

我通过ajax将数据发送到我的控制器函数:

public function postAjax(Request $request)
{
    $data = $request->all();
}
我的ajax中的success方法调用$data,但如果我将其粘贴到这里,则base64string是错误的:它没有显示任何内容

工作base64字符串: 无法工作的base64字符串:


除此之外,我还获得了围绕不工作的Base64字符串生成的脚本:

典型的Base64字符串可能如下所示:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz IHNPBMD1BGFYIHBHC3NPB24GZNJVBSBVDGHLCIBBMLTYWXZLCB3AGLJACBPCYBHIGX1C3QGB2YG DGHLIG1PBMQSIHROYXQGYNKYSBWZXJZZZLCMFUY2UGB2YGZGVSAWDODCBPBIB0AGUGY29UDGLU dwvkigfuzcbpbmrlzmf0awdhymxligdlbmvyyxrpb24gb2yga25vd2xlzgdllblegnlzwrzihro ZSBZAG9YDCB2 ZWHLBWVUY2UGB2YGYW55IGNHCM5HBCBWBGVHC3VYZS4=

注意,由于最后的
=
,服务器将获得一个带有数组键
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz的查询字符串
IHNPBMD1BGFYIHBHC3NPB24GZNJVBSBVDGHLCIBBMLTYWXZLCB3AGLJACBPCYBHIGX1C3QGB2YG
DGHLIG1PBMQSIHROYXQGYNKYSBWZXJZZZLCMFUY2UGB2YGZGVSAWDODCBPBIB0AGUGY29UDGLU
dwvkigfuzcbpbmrlzmf0awdhymxligdlbmvyyxrpb24gb2yga25vd2xlzgdllblegnlzwrzihro
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4
和一个空值,它会把事情搞砸

这样做:

function saveBase64StringAjax(imgData) {
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    $.ajax({
        url: 'postStream',
        type: 'post',
        data: { imgData: imgData },
        success:function(data) {
            console.log(data);
        }
    });
}
然后,您可以通过以下方式获取此数据:

public function postAjax(Request $request) {
    $data = $request->imgData;
}

我建议在客户端上显式地将请求的内容类型设置为
application/image
,并在服务器上读取原始POST数据。数据可以更改,请检查发送的数据字符串。