Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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);
Не обновляет код


Я честно не знаю подскажите как поправить
Ответить с цитированием
  #2 (permalink)  
Старый 29.03.2018, 00:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от biryukovm
2. создается временный файл с temp расширением чтобы не повторялось
Где? И это

//Формируем js-файл
$res = '<script type="text/javascript">';
...

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

Сообщение от laimas Посмотреть сообщение
Где? И это

//Формируем js-файл
$res = '<script type="text/javascript">';
...

к чему, вы что хотите скрестить обычное отправление формы с асинхронным запросом?


Шаг 2 это
Файл загрузки (вызывается через фору на заднем плане сайта)
Код выше, я не стал все показываеть но новое имя идет тут $new_name и я подмениваю массив по методу php


Нет срабатывает все синхронно, по шагово. я же не делаю вызов окна в момент загрузки файла а дергаю когда проработает скрипт php и далее всплывает финальное 4 окно
Ответить с цитированием
  #4 (permalink)  
Старый 29.03.2018, 11:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от biryukovm
Шаг 2 это
Файл загрузки (вызывается через фору на заднем плане сайта)
Как все запутано... )

Временный файл, а надо полагать речь о файле на сервере, не может создаваться на заднем или переднем плане. Временный файл уже создается сервером автоматически и без вашего участия во временной папке, а ваша обязанность его переместить в каталог после окончания загрузки функцией move_uploaded_file().

Именование же файлов как значений уникальных, это ваша обязанность, и в общем-то не понятно какие с этим могут быть проблемы.

Если все вами написанное трактовать как желание временного хранения файлов без перемещения их в каталог до загрузки всех файлов, то есть сессия, в которую можно их записывать, включая и созданные им имена (а может хватит и индексов). После окончания они связываются с чем либо, именуются и сохраняются в каталог. Если что-то пойдет не так, то они будут удалены сборщиком мусора.

А вот остальное я вообще не могу понять - вы используете готовый плагин, который производит асинхронную загрузку, включая и использование iframe для старых браузеров, и к этому плагину хотите прикрутить еще и свой JS?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AngularJS не обновляется таблица. Нужна помощь Георгий4134 Общие вопросы Javascript 1 05.12.2017 14:26
Не обновляется анимация при добавлении товара в корзину tetra1282 Элементы интерфейса 6 05.04.2016 17:08
Не обновляется контент после повторного добавления данных в историю браузера grach28rus AJAX и COMET 3 22.09.2015 04:47
Не обновляется кэш у юзеров Maggie Javascript под браузер 12 28.08.2014 18:07
FF и window.parent LRCenter Firefox/Mozilla 2 09.02.2012 16:36