Как исправить данные, которые не отображаются на странице, но отображаются при предварительном просмотре в сети

Я пытаюсь опубликовать изображение, которое было преобразовано в 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 мог отображаться на моей странице

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратите внимание, что метод HTMLCanvasElement.toDataURL() возвращает URL-адрес данных, содержащий представление изображения в формате, указанном параметром типа. Для получения более подробной информации вы можете обратиться к документации Mozilla.

Ссылаясь на опубликованный вами код, вам нужно отметить и/или исправить ряд вещей:

  1. обычное оповещение JS, например alert(imgData), не сможет отображать какие-либо изображения/графику
  2. PHP, который вы пытаетесь использовать, имеет echo $image; в качестве последней строки, но он не сможет отображать изображение сам по себе, вместо этого вам следует использовать echo "<img src='". $image . "'>"; (если вы хотите отображать изображение автономным способом)
  3. 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 . "'>"; 
?>

Примечание:

  1. Я добавил код для рисования круга на холсте, чтобы что-то можно было передать в PHP с помощью ajax (но, конечно, вы можете использовать другие методы, чтобы нарисовать что-то на холсте)
  2. Возвратом ajax будет оператор отображения изображения в форме «<img src='". $image . "'>"». Поскольку такое изображение не будет отображаться в предупреждении, я добавил в HTML DIV с идентификатором «ajaxreturn», чтобы система могла разместить возвращаемое изображение. в этом DIV

Результат (я сделал дамп экрана своего браузера) будет:

Нижний круг — это тот, который мы нарисовали на холсте, а верхний круг — это изображение, возвращаемое из PHP через ajax.

Я пытаюсь предупредить imgdata просто для проверки, и я пытаюсь отобразить сам URL-адрес, а не изображение. Я знаю, как использовать URL-адрес с тегом img. моя проблема в том, что на моей странице $_POST['imgData'] ничего не показывалось, но я вижу URL-адрес при предварительном просмотре в сети

Unknown 29.04.2024 08:24

(1) сначала изучите, что означает HTMLCanvasElement.toDataURL() (иначе я не буду помещать это в первый абзац своего ответа) (2) пожалуйста, прочитайте весь мой ответ, и вы знаете, что нужно исправить в вашем коде - (a) предупреждение (б) что возвращается в ajax и т. д.

Ken Lee 29.04.2024 08:31

Другие вопросы по теме