Я использую библиотеку kineticjs, и у меня есть сценарий, который сохраняет сцену как изображение с использованием метода toDataURL
и загружает его на сервер с помощью XMLHttpReuest
. Все работает как ожидается, чтобы получить изображение, сохраненное на сервере, но я не могу заставить страницу перенаправлять или изменять после завершения.Перенаправление после завершения XMLHttpRequest
Мой JavaScript/kineticjs код для генерации изображения является:
function save() {
stage.toDataURL({
callback: function(dataUrl) {
var ajax = new XMLHttpRequest();
ajax.open("POST",'upload_screenshot.php?newname=<?php echo $newname;?>',false);
ajax.setRequestHeader('Content-Type', 'application/upload');
ajax.send(dataUrl);
}
});
}
Мой код upload_screenshot.php является:
<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])){
$imageData=$GLOBALS['HTTP_RAW_POST_DATA'];
$newname = $_GET['newname'];
$imagefile = 'final_images/'.$newname.'.png';
$filteredData=substr($imageData, strpos($imageData, ",")+1);
$unencodedData=base64_decode($filteredData);
$fp = fopen($imagefile, 'wb');
fwrite($fp, $unencodedData);
fclose($fp);
header('Location: http://www.example.com');
}
?>
Таким образом, изображение сохраняется на сервере, но я получаю следующее ошибка в консоли хром javascript:
Uncaught Error: NetworkError: DOM Exception 19
Что это значит?
Если я изменить открытый вызов от ложного (синхронно):
ajax.open("POST",'upload_screenshot.php?newname=<?php echo $newname;?>',false);
к истинному (асинхронный):
ajax.open("POST",'upload_screenshot.php?newname=<?php echo $newname;?>',true);
я теперь получить файл, сохраненный на сервере без ошибок, но снова не перенаправлять на example.com
безупречный! спасибо :) помог мне нагрузка. php echo является временным, но спасибо за консультацию тоже –