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, время: 12:33. |