Я пытаюсь опубликовать изображение, которое было преобразовано в URL с помощью ajax. Проблема в том, что $image = $_POST['imgData'];
ничего не показывает, но если я проверю инструменты разработчика при предварительном просмотре в сети, данные можно будет увидеть.
это мой сценарий
var canvas = document.getElementById('chart1');
var imgData = canvas.toDataURL('image/png', 1);
//console.info(imgData);
$.ajax({
type: "POST",
url: "?f=view_customer_list",
data: { imgData: imgData },
success: function(response) {
alert(imgData);
}
});
PHP-код
$image = $_POST['imgData'];
echo $image;
я хочу, чтобы URL мог отображаться на моей странице
Обратите внимание, что метод HTMLCanvasElement.toDataURL()
возвращает URL-адрес данных, содержащий представление изображения в формате, указанном параметром типа. Для получения более подробной информации вы можете обратиться к документации Mozilla.
Ссылаясь на опубликованный вами код, вам нужно отметить и/или исправить ряд вещей:
alert(imgData)
, не сможет отображать какие-либо изображения/графикуecho $image;
в качестве последней строки, но он не сможет отображать изображение сам по себе, вместо этого вам следует использовать echo "<img src='". $image . "'>";
(если вы хотите отображать изображение автономным способом)imgData
не сможет ничего вернуть из PHP через ajax, вместо этого вам следует использовать response
, поскольку вы используете success: function(response) { ... }
Итак, чтобы продемонстрировать, как вы можете передать данные холста в PHP через ajax, а затем вернуться, вы можете использовать следующее
HTML
<script
src = "https://code.jquery.com/jquery-3.7.1.js"
integrity = "sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4 = "
crossorigin = "anonymous"></script>
<div id=ajaxreturn></div>
<canvas id = "chart1" width = "200" height = "100" >
<script>
var c = document.getElementById("chart1");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95, 50, 40, 0, 2 * Math.PI);
ctx.stroke();
</script>
<script>
var canvas = document.getElementById('chart1');
var imgData = canvas.toDataURL('image/png', 1);
//console.info(imgData);
$.ajax({
type: "POST",
url: "testajax.php",
data: { imgData: imgData },
success: function(response) {
document.getElementById('ajaxreturn').innerHTML=response;
}
});
</script>
PHP (testajax.php)
<?php
$image = $_POST['imgData'];
echo "<img src='". $image . "'>";
?>
Примечание:
<img src='". $image . "'>"
». Поскольку такое изображение не будет отображаться в предупреждении, я добавил в HTML DIV с идентификатором «ajaxreturn», чтобы система могла разместить возвращаемое изображение. в этом DIVРезультат (я сделал дамп экрана своего браузера) будет:
Нижний круг — это тот, который мы нарисовали на холсте, а верхний круг — это изображение, возвращаемое из PHP через ajax.
(1) сначала изучите, что означает HTMLCanvasElement.toDataURL()
(иначе я не буду помещать это в первый абзац своего ответа) (2) пожалуйста, прочитайте весь мой ответ, и вы знаете, что нужно исправить в вашем коде - (a) предупреждение (б) что возвращается в ajax и т. д.
Я пытаюсь предупредить imgdata просто для проверки, и я пытаюсь отобразить сам URL-адрес, а не изображение. Я знаю, как использовать URL-адрес с тегом img. моя проблема в том, что на моей странице $_POST['imgData'] ничего не показывалось, но я вижу URL-адрес при предварительном просмотре в сети