将带有字符串的 javascript 数组发送到 php 操作
Send javascript array with strings to php action
我想将一个带有图像字符串的数组发送到我的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);
});
我发送的数组如下所示:
["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAYAAAByNR6YAAAgAElEQ...197b1kPfJ5y3guHO4WLEyAAAECBAgcEFjz7y+zZJ6ttf8GC0YA4ro/bucAAAAASUVORK5CYII=","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAYAAAByNR6YAAAgAElEQ...9v2cl0YeqeBTqMAAIIIIAAAgMINO3aT3a+sfNxGIa7fwBwOTGmIk2OYgAAAABJRU5ErkJggg==","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAYAAAByNR6YAAAgAElEQ...xdLNBhIkAEiAARIAJEIA8I7FRlf1T/XlD/hhcoUOCv/we6Hn4A9659wwAAAABJRU5ErkJggg==","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAYAAAByNR6YAAAgAElEQ...BdGOlYwAkjASSABJAAEkACBgm8UI89qf6sUX9GRIkS5cr/AFfL9D3Dad7CAAAAAElFTkSuQmCC"]
在我的PHP操作中,我执行以下操作:
if(isset($_POST['quizid']))
$quizid = $_POST['quizid'];
if(isset($_POST['image']))
$image = $_POST['image'];
var_dump(json_decode($image));
转储仅显示"NULL"。当我这样做时:
var_dump($image);
我只是得到:string(1) "["
尝试:
imagesarray = encodeURIComponent( JSON.stringify(imagesarray) );
更新
并在 PHP 中使用
$image = json_decode(urldecode($_POST['image']));
我不熟悉$.download
方法。据推测,它是一个允许文件下载的 AJAX 扩展名。我可以猜到它是如何工作的。
问题是您没有发送有效的 HTTP 请求。JSON需要转义才能通过HTTP发送。你可以使用 encodeURIComponent
自己做这件事,或者你可以让 jQuery 的 $.param
方法为你处理它。
var data = $.param({
quizid: quizid,
image: imagesarray
});
$.download('/results/savepdf', data);
- 如何在窗体操作或window.location(PHP)中使用数据切换
- 以相同的形式处理javascript和php中下拉列表的操作
- 在JavaScript中的无操作(空)函数中不添加换行符的选项(IntelliJ Web/PHP风暴)
- 从HTML表单中获取计算得到的JavaScript数据,并将其作为新元素添加到相同的表单操作中以使用PHP保存
- php使用ajax生成html表,以应用用户操作,如删除、更新和编辑
- 使用PHP获取AJAX或js操作后的文档源
- 如何将json从php传递到js并对其进行操作
- 使用爆炸将php字符串转换为数组,需要在javascript中帮助操作
- 将java脚本变量传递给相同的表单操作php文件参数
- 在 PHP MVC 中从 Javascript 调用操作方法
- 在操作上以 HTML 形式调用 php,但不重定向
- 将带有字符串的 javascript 数组发送到 php 操作
- 使用 AJAX 提交表单 PHP JQuery 将我带到操作页面
- 使用 JSON 从 JavaScript/jQuery 中的 PHP 获取数组,然后对其进行操作
- 从表单操作调用JS函数,然后从JS调用PHP
- 在表单中显示来自 php 操作脚本的消息
- 我如何才能让php操作留在这个页面上,直到我使用JQuery退出
- 在新浏览器/窗口上单击提交按钮后打开PHP操作
- 使用PHP操作css类是不是一种糟糕的做法
- 使用HTML 5或PHP操作服务器上的文件