Я пытаюсь отправить как простой массив, так и canvas.toDataURL()
параметр через один запрос ajax. Массив отправляется просто отлично, а данные холста — нет. Однако, если я удаляю массив ‘formData’ из отправки, данные холста проходят просто отлично. Спасибо за любую помощь. Это мой код для отправки данных:
var formData = {
'name' : $('input[name=name]').val(),
'age' : $('input[name=age]').val(),
'gender' : $('input[name=gender]:checked').val(),
'type' : $('input[name=type]').val(),
};
event.preventDefault();
$.ajax({
type: "post",
dataType: "json",
url: "petupload.php",
data: { image: canvas.toDataURL(), stuff: formData }
})
Это код для получения данных (petupload.php):
<?php
include('include/session.php');
if($_SERVER['REQUEST_METHOD'] == "POST") {
$array=$_POST['stuff']; // Fetching Values from URL
$image = $_POST['image'];
$name = $array['name'];
$age = $array['age'];
$gender = $array['gender'];
$type = $array['type'];
// image name
$length = 10;
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$imgname = '';
for ($i = 0; $i < $length; $i++) {
$imgname .= $characters[rand(0, strlen($characters) - 1)];
}
// location to save cropped image
$url = 'pictures/'.$imgname.'.jpg';
// remove the base64 part
$base64 = preg_replace('#^data:image/[^;]+;base64,#', '', $_POST['image']);
$base64 = base64_decode($base64);
$source = imagecreatefromstring($base64); // create
imagejpeg($source, $url, 100); // save image
$session->editpet($name, $gender, $type, $age);
$session->profilepic($imgname.'.jpg');
// return URL
$validation = array (
'url' => $url . '?' . sha1(uniqid(mt_rand(), true))
);
echo json_encode($validation);
}
Вы можете просто добавить изображение к данным формы по мере ее создания.
var formData = {
'name': $('input[name=name]').val(),
'age': $('input[name=age]').val(),
'gender': $('input[name=gender]:checked').val(),
'type': $('input[name=type]').val(),
'image': canvas.toDataURL()
};
Других решений пока нет …