Скажите как правильно сделать так, чтобы код работал? Есть форма через которую загружается изображения на сервер, сервер обрабатывает файлы и отправляет Json ответ с html кодом изображения который должен появиться на странице, status b success. Так, вот если загружаю 1 файл, все хорошо, а вот если 2 и более файлов то сервер возвращает перебором массива 2 json ответа и изображения не отображаются. Не пинайте сильно, я только учусь)))
HTML
<h3>Миниатюры</h3><div class="photo_album"></div>
<form id="upload_form" action="ajaxpet" method="POST" enctype="multipart/form-data">
<input type="hidden" name="pet_id" value="<?=$_POST['id']?>" >
<input type="hidden" name="action" value="upload-photo" >
<div class="form-group" style="margin-top: 30px;">
<label>Фото (только формат .jpeg/jpg):</label>
<input type="file" name="photo[]" multiple>
</div>
<div class="box-footer">
<input type="submit" name="submit" value="Добавить" class="btn btn-info">
</div></form>
JS
$.ajax({
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener("progress", setProgress, false);
xhr.addEventListener("progress", setProgress, false);
return xhr;
},
url : post_url,
type: "POST",
data : form_data,
contentType: false,
cache: false,
processData:false,
dataType: 'json',
success: function(res){ //
if(res.status === 'success'){
$(my_form_id)[0].reset(); //сброс формы
$('.photo_album').fadeIn('slow', function() {
$(this).append(res.html);
$('#pBar').html("0%"); //сброс output
});
//вывод всплывающего окна с результатом действия
MyAlert.fire({
type: 'success',
title: res.success,
background: '#fff'
}),
submit_btn.val("Добавить").prop( "disabled", false);
}else{
MyAlert.fire({
type: 'error',
title: res.error,
background: '#fff'
}),
submit_btn.val("Добавить").prop( "disabled", false);
}
},
})
PHP
try{
$responses = $im->resize(); //инициируем изменение размера изображения
# Вставляем записи в базу
$q = mysqli_prepare($CONNECT, "INSERT INTO `photo` (`id`, `thumb`,
`full_photo`, `parent_id`) VALUES ('', ?, ?, $pet_id)");
mysqli_stmt_bind_param($q, 'ss', $thumb, $full_img);
if ($q === false) {
die(mysqli_error($CONN));
}
//Вывод миниатюр
foreach($responses["thumbs"] as $resp){
$thumb = $resp;// кладем в переменную ссылку на тумбу
$full_img = mb_substr($resp, 6);// кладем в переменную ссылку на
изображения
# выполнение подготовленного запроса
mysqli_stmt_execute($q);
# получаем id последнего обращения к базе
$id_last_query = mysqli_insert_id($CONN);
$html = '<div id="p-'.$id_last_query.'"
onmouseout="$(this).removeClass(\'hoversel\');"
onmouseover="$(this).addClass(\'hoversel\');" class="photo_block">
<span class="p180" style="background-image:
url(\''.$config["upload_url_thumb"].$resp.'\');"></span>
<div class="photo_menu">
<em><a id="m-'.$id_last_query.'" class="photo_main"
title="Сделать главной" href="#"
onclick="photo_set_main('.$id_last_query.'); return false;"><b></b></a>
<a id="e-'.$id_last_query.'" class="photo_edit" href="#"
title="Редактировать фото"><b></b></a>
<a id="s-'.$id_last_query.'" class="photo_slider" href="#"
onclick="photo_slider_on('.$id_last_query.'); return false;" title="Добавить
в слайдер"><b></b></a><a class="photo_open" data-fancybox="gallery"
href="'.$config["upload_url_big"].$full_img.'" title="Открыть фото"><b></b>
</a>
<a id="d-'.$id_last_query.'" class="photo_del" href="#"
onclick="photo_delete('.$id_last_query.', \''.$full_img.'\'); return false;"
title="Удалить фото"><b></b></a></em>
</div>
<div class="phhov"></div>
</div>';
$response = array('html'=>$html,
'status'=>'success',
'success'=>'Фотография добавлена'
);
echo json_encode($response);
}
}catch(Exception $e){
$response = array('error'=>$e->getMessage(), 'status'=>'bad');
echo json_encode($response);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу найти подходящую функцию для замены определённых вхождений
Хочу спарсить цену на ETH и BTC с кмк, но почему-то цена выводится 1 раз, только на биток или эфир, как оптимизировать скрипт?