#php #jquery #gd
#php #jquery #gd
Вопрос:
У меня простой вопрос — почему мое изображение в формате * .png, созданное PHP GD, неправильно отображается на веб-странице? Мой PHP-код:
back.php
<?php
$height = 200;
$width = 600;
$jVar = $_POST['jPacket']; //velue from jQuery script
$im = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
imagefill($im, 0, 0, $white);
//line_1
imageline($im, 10, 0, 10, $height, $black);
//line_2
imageline($im, $jVar, ($height/2), $height-$jVar, ($height/2), $black);
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
…и простой jQuery AJAX post здесь:
script.js
var graphBack = $('<img id="backGraph" src="back.php" alt="backGraph"/>');
$('.value').keyup(function() {
$.post(
"back.php", //send the POST here
{
jPacket: $('.value').val() //value from <input>
}, function() {
$('#backGraph').remove(); //remove old picture
graphBack.insertAfter($('#sipGraph p')); //put the picture here
});
Изображение отображается правильно, но не все видно. ‘line_1’ виден, потому что все элементы в imageline(...)
являются статическими, но ‘line_2’ не отображается, потому 'imageline(..., $jVar, ...)
что имеет значение, которое отправляется $_POST['jPacket']
из scipt.js .
Правильно ли я показываю IMG в graphBack.insertAfter($('#sipGraph p'));
?
Когда я выполняю выше scanario, но данные отправляются не из jQuery, а из обычной HTML-ФОРМЫ, все в порядке…
Ответ №1:
Отправляемое вами сообщение — это не то, что отображается на странице. Когда вы прикрепляетесь var graphBack = $('<img id="backGraph" src="back.php" alt="backGraph"/>');
к странице, вы создаете второй отдельный запрос без post — по сути, загружаете изображение на страницу. Back вызывается по существу дважды, и время с POST не является отображаемым вами ответом.
Вместо этого я бы просто прикрепил сгенерированный тег изображения вдоль строк $('<img id="backGraph" src="back.php?jPacket=' MYAWESOMEJPACKET '" alt="backGraph"/>');
и заменил текущий — дальнейшее обновление скрипта для использования GET .
Комментарии:
1. хм… Я постараюсь сделать это дома, но мне интересно, не должно ли быть чего-то подобного в моем js :
}, function(DATA) {
. The back.php скрипт выдает некоторые данные, так что, возможно, проблема в том, что я неправильно вставляю их в свой скрипт.