Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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数组发送到php操作_Javascript_Php_Arrays_Image - Fatal编程技术网

将带字符串的javascript数组发送到php操作

将带字符串的javascript数组发送到php操作,javascript,php,arrays,image,Javascript,Php,Arrays,Image,我想向我的php操作发送一个带有图像字符串的数组。这就是我目前所做的: $('#savepdf').click(function() { var imagesarray = new Array(); var count = 4; var quizid = <?php echo json_encode($quizid); ?>; for (var i=0; i<count; i++) { var chart = Highch

我想向我的php操作发送一个带有图像字符串的数组。这就是我目前所做的:

$('#savepdf').click(function() {
    var imagesarray = new Array();
    var count = 4;
    var quizid = <?php echo json_encode($quizid); ?>;
    for (var i=0; i<count; i++)
    {
        var chart = Highcharts.charts[i];
        var canvasname;
        if(i == 0){
            canvasname = "canvas";
        }
        else{
            canvasname = "canvas" + i;
        }

        // get highcharts
        canvg(document.getElementById(canvasname), chart.getSVG())

        var canvas = document.getElementById(canvasname);
        var img = canvas.toDataURL("image/png");

        imagesarray[i] = img;
    }

    imagesarray = JSON.stringify(imagesarray);

    // AJAX CALL TO ACTION
    $.download('/results/savepdf','quizid=' + quizid + '&image=' + imagesarray);
});
转储只显示“NULL”。当我这样做时:

var_dump($image);
我刚刚得到:
string(1)“[”
尝试:

更新

以及在php中的使用


我不熟悉
$.download
方法。它可能是一个允许文件下载的AJAX扩展。我可以猜它可能是如何工作的

问题是您没有发送有效的HTTP请求。需要转义JSON才能通过HTTP发送。您可以使用
encodeURIComponent
自己执行此操作,也可以让jQuery的方法为您处理

var data = $.param({
    quizid: quizid,
    image: imagesarray
});
$.download('/results/savepdf', data);

$\u POST[“image”]
根本不是有效的JSON(这就是为什么会得到
null
)。你能在发布之前将
encodeURIComponent
添加到
imagesarray
吗?你不需要使用
$\u GET
而不是
$\u post
?我不知道
$。下载
方法,所以我不确定,但对我来说它看起来像一个查询字符串。(当然,它也可能是编码后的格式)当我在php中检查数据时,我有这样一句话:“%5B%22data%3Aimage%2Fpng%3Bbase64%2CiV,你知道如何对美元符号进行编码吗?(特殊字符)在php中试试
$image=json\u decode(urldecode($\u POST['image'));
imagesarray = encodeURIComponent( JSON.stringify(imagesarray) );
$image = json_decode(urldecode($_POST['image']));
var data = $.param({
    quizid: quizid,
    image: imagesarray
});
$.download('/results/savepdf', data);