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); Не обновляет код Я честно не знаю подскажите как поправить |
Цитата:
//Формируем js-файл $res = '<script type="text/javascript">'; ... к чему, вы что хотите скрестить обычное отправление формы с асинхронным запросом? |
Цитата:
Шаг 2 это Файл загрузки (вызывается через фору на заднем плане сайта) Код выше, я не стал все показываеть но новое имя идет тут $new_name и я подмениваю массив по методу php Нет срабатывает все синхронно, по шагово. я же не делаю вызов окна в момент загрузки файла а дергаю когда проработает скрипт php и далее всплывает финальное 4 окно |
Цитата:
Временный файл, а надо полагать речь о файле на сервере, не может создаваться на заднем или переднем плане. Временный файл уже создается сервером автоматически и без вашего участия во временной папке, а ваша обязанность его переместить в каталог после окончания загрузки функцией move_uploaded_file(). Именование же файлов как значений уникальных, это ваша обязанность, и в общем-то не понятно какие с этим могут быть проблемы. Если все вами написанное трактовать как желание временного хранения файлов без перемещения их в каталог до загрузки всех файлов, то есть сессия, в которую можно их записывать, включая и созданные им имена (а может хватит и индексов). После окончания они связываются с чем либо, именуются и сохраняются в каталог. Если что-то пойдет не так, то они будут удалены сборщиком мусора. А вот остальное я вообще не могу понять - вы используете готовый плагин, который производит асинхронную загрузку, включая и использование iframe для старых браузеров, и к этому плагину хотите прикрутить еще и свой JS? |
Часовой пояс GMT +3, время: 03:31. |