Привет всем может кто подскажет.
У меня есть форма для загрузки картинок.
Работает эта так
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);
Не обновляет код
Я честно не знаю подскажите как поправить