Я знаю, что этот вопрос уже был здесь, но ни один из решений не работает для меня. Итак, я использую Kinetics.js, и у меня есть приложение для холста, где люди могут рисовать свои изображения (довольно просто). Идея состоит в том, что когда изображение будет готово, пользователь перейдет на следующую страницу, но мне нужно, чтобы его рисунок был сохранен как файл на сервере.
Вот мой код: JavaScript:
$('#someButton').click(function(){
hiddenCanvas.toDataURL({
callback:function(dataUrl){
$.ajax({
type: "POST",
url: "scripts/imgsave.php",
data: {image: dataURL}
});
}
});
window.location = 'scripts/imgsave.php';
)};
И PHP:
if ( isset($_POST["image"]) && !empty($_POST["image"]) ) {
$dataURL = $_POST["image"];
$parts = explode(',', $dataURL);
$data = $parts[1];
$data = base64_decode($data);
$fp = fopen('../images/test.png', 'w');
fwrite($fp, $data);
fclose($fp);
}
Проблема в том, что, что бы я ни делал, PHP сохраняет пустой файл на моем сервере. Поэтому я думаю, что dataURL отправляется неправильно. Что может быть здесь?
Ваш корпус неверен:
Функция обратного вызова создает dataUrl
то время как ваш вызов ajax отправляет dataURL
BTW, это хорошая практика, чтобы продлить ваш вызов ajax с помощью обратных вызовов.done и.fail;)
Обновленный код:
$('#someButton').click(function(){
hiddenCanvas.toDataURL({
callback:function(dataUrl){
$.ajax({
type: "POST",
url: "scripts/imgsave.php",
data: {image: dataUrl}
});
}
});
window.location = 'scripts/imgsave.php';
)};