Мне нужно преобразовать диаграмму в изображение и загрузить на сервер, но я просто не знаю, что я делаю неправильно ... Похоже, что в ajax есть конфликт при разборе данных изображения. Также пытался использовать base64 кодирование / декодирование, но, похоже, ничего не работает
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/chart.js@2.9.3/dist/Chart.bundle.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<div class="chartjs-wrapper" style="display: block; width: 700px; height: 450px;">
<canvas id="myChart"></canvas>
</div>
<script>
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['A', 'B'],
datasets: [{
label: '#',
data: [12, 19],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)'
],
borderWidth: 1
}]
}
});
</script>
<script>
$(window).load(function() {
// CANVAS TAG TO IMAGE
var canvas = document.getElementById('myChart');
var context = canvas.getContext('2d');
var imageObj = new Image();
context.drawImage(imageObj, 0, 0, 700, 450);
var pngUrl = canvas.toDataURL();
var myFormData = new FormData();
myFormData.append('image', pngUrl.files[0]);
$.ajax({
type: "POST",
dataType : 'json',
processData: false,
contentType: false,
url: "upload.php",
data: myFormData
}).done(function(response) {
//alert(response);
}).fail(function(jqXHR, textStatus ) {
alert("Request failed: " + textStatus);
})
});
</script>
</body>
</html>
Может быть, есть проблема с FormData?
Есть ли лучший подход для этого?