Когда я называю это JS:URI слишком долго возвращения из АЯКС пост
jQuery.ajax({
type: 'POST',
url: '/renderscooter',
data: { img: imgSrc, deimg: imgDe, newimg: img}
})
.done(function(html) {
jQuery('#content_illu').css('background-image', 'data:image/png;base64,'+html);
jQuery('#content_illu').css('background-size','auto 737px');
});
Я ожидаю, что новый образ, созданный динамически отображается в браузере, но я получаю:
414 Request-URI Too Large
Я вижу изображение поставляется с URL-адресом:
http://pg251.inetpsa.com/configure/iVBORw0KGgoAAAANSUhEUgAAB4AAAAQ4C....
, и это странно для меня.
Как избежать этой проблемы?
Изображения отправляются обратно на вызов Ajax из метода контроллера ZF2 PHP как:
... creation of the image ...
ob_start();
//ImagePng($imgPng, $dstImagePathName);
ImagePng($imgPng);
ImageDestroy($imgPng);
$imageData = ob_get_clean();
$response = $this->getResponse();
$response
->getHeaders()
->addHeaderLine('Content-Transfer-Encoding', 'binary')
->addHeaderLine('Content-Type', 'image/png')
->addHeaderLine('Content-Length', mb_strlen($imageData));
//$response->setContent('url("'.$dstImageName.'")');
$response->setContent(base64_encode($imageData));
return $response;
Спасибо за ваше время.
EDIT
Наконец я избегал метод AJAX, и использовать этот подход: change background-image to other one created dynamically by ajax call script
Почему 'content-type image/png'? Вы отправляете обратно текст – charlietfl
, вы правы, мне не нужно устанавливать это ... в любом случае проблема не решена. Я также удалил кодировку base64. Я не получаю длинный uri сейчас, но вместо этого изображение отображается. Я вижу кусок байтов в качестве ответа с firebug. Я пробовал разные способы, но, по крайней мере, я сохраняю изображение на диск и возвращаю ur ur (path) в качестве ответа на вызов Ajax. Я не могу получить изменение изображения (отображается). Я стараюсь избегать наложения образа на диск. – manou
работает ли он на php-странице на сервере, без ajax, просто выводит тег изображения с данными в нем? – charlietfl