Обработка нескольких ответов в формате Json

149
01 февраля 2020, 18:50

Скажите как правильно сделать так, чтобы код работал? Есть форма через которую загружается изображения на сервер, сервер обрабатывает файлы и отправляет 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);
}
READ ALSO
Замена определённых вхождений php

Замена определённых вхождений php

Не могу найти подходящую функцию для замены определённых вхождений

171
could not find driver

could not find driver

У меня нету extension=php_pdo_mysqldll в php

171
Парсинг цены coinmarketcap

Парсинг цены coinmarketcap

Хочу спарсить цену на ETH и BTC с кмк, но почему-то цена выводится 1 раз, только на биток или эфир, как оптимизировать скрипт?

140