Форма Jquery AJAX с 2 типами данных

Я пытаюсь отправить как простой массив, так и 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);
}

1

Решение

Вы можете просто добавить изображение к данным формы по мере ее создания.

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()
};
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector