Показать сообщение отдельно
  #1 (permalink)  
Старый 29.03.2018, 00:11
Кандидат Javascript-наук
Отправить личное сообщение для biryukovm Посмотреть профиль Найти все сообщения от biryukovm
 
Регистрация: 13.12.2013
Сообщений: 110

window.parent Не обновляется
Привет всем может кто подскажет.

У меня есть форма для загрузки картинок.
Работает эта так
1.Жмем на кнопку загрузить картинку, грузим её
2. создается временный файл с temp расширением чтобы не повторялось
3. По окончанию загрзки выполняем код JS с передачей переменных
4. Финальное окно обрезки картинки и сохранение (сюда не дохожу подробности ниже)


Так вот загружается каждый раз новая картинка и я получаю каждый раз новое имя даже если загружаю одну и туже картинку

Но вот JS скрипт стопорит , А то-есть
Если я выбираю картинку гружу и не прохожу 4 шаг до конца а просто закрываю модальное окно , И опять гружу эту же картинку то 4 шаг всплывания модального окна с новой картинкой не срабатывает

А если новую указываю то нормально.
Вот пример кода

--- Файл загрузки (вызывается через фору на заднем плане сайта)
move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadedFile)
$data = $_FILES['userfile'];
$data = array_replace($data, array('name' => $new_name));


    
    //Формируем js-файл    
    $res = '<script type="text/javascript">';
    $res .= "console.log('".$uploadedFile."');";
    $res .= "var data = new Object;";
    foreach($data as $key => $value){$res .= 'data.'.$key.' = "'.$value.'";';}
    $res .= 'window.parent.handleResponse(data);';
    $res .= "</script>";
    echo $res;



-- Файл рабочей страницы (где все визуально видно клиенту)
<div class="avatar_div" style="line-height: 0;">

<script type="text/javascript">
        $(document).ready(function() {
            $("#userfile").change(function(){ // событие выбора файла
                $("#userfileform").submit(); // отправка формы
            });
        });
</script>
<form id="userfileform" action="/admin/sys/avatar_tovar_upload.php" method="post" target="hiddenframe" enctype="multipart/form-data" onsubmit="hideBtn();">
<label for="userfile" class="btn btn-default" id="uploadButton">Загрузить файл</label>
<input style="opacity: 0; z-index: -1;height: 0;" type="file" id="userfile" name="userfile"/>
<input type="hidden" name="upload" id="upload" value="Загрузить"/>
</form>
<iframe id="hiddenframe" name="hiddenframe" style="width:0px; height:0px; border:0px"></iframe>
<script type="text/javascript">
        function hideBtn(){
            $('#upload').hide();
            $('#uploadButton').html("Идет загрузка файла");
            $('#uploadButton').addClass('progress-bar-bottom');
            //$('#res').html("Идет загрузка файла");
        }
        function handleResponse(mes) {
            $('#upload').show();
            $('#uploadButton').removeClass('progress-bar-bottom');
            $('#uploadButton').html("Загрузить файл");
            if (mes.errors != null) {
                $('#res').html("Возникли ошибки во время загрузки файла: " + mes.errors);
            }else{
                $.ajax({type: "POST",url: "***",data: {"tip": "****", "img":mes.name, "id":"<?php echo $x4; ?>"},
                dataType: "html",cache: false,success: function(data){
                    $.fancybox.open(data);
                }
                });
            }
        }
    </script>
    </div>
</div>




Я так думаю почему то не всегда срабатывает function handleResponse(mes)

А причина всему в форме загрузки window.parent.handleResponse(data);
Не обновляет код


Я честно не знаю подскажите как поправить
Ответить с цитированием