将带字符串的javascript数组发送到php操作
我想向我的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
$('#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);