Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.04.2016, 17:13
St. St. вне форума
Аспирант
Отправить личное сообщение для St. Посмотреть профиль Найти все сообщения от St.
 
Регистрация: 15.04.2016
Сообщений: 53

Вставка нескольких изображений и возврат назад по кнопке браузера
Нажимаю "Добавить еще изображение", выбираю файл - и так три раза подряд. Потом нажимаю кнопку "Загрузить". Все нармально.
Теперь пытаюсь вернуться назад, нажимаю кнопку браузера назад. И вот проблема, надо повторно опять добавлять изображения. Т.е. вернуться назад по кнопе браузера не получается.
Как решить это? Подскажите пожалуйста (код ниже).
Это глюк браузера (opera) или не совсем правильный код?

<?php
//
// JavaScript.
//
echo '<script>
function insert()
{
var newspan = document.createElement("span");
str  = \'<table width="100%" style="margin-top: 2px; margin-bottom: 2px;" align="left" cellspacing="0" cellpadding="0" border="0">\';
str += \'<tr>\';
str += \'<td>\';
str += \'<input type="file" size="70" name="download_image[]">\';
str += \'</td>\';
str += \'</tr>\';
str += \'</table>\';
newspan.innerHTML = str;
list.appendChild(newspan);
}
</script>';

// Форма.
echo '<form method="post" enctype="multipart/form-data" name="file_edit_form" action="http://127.0.0.1/index.php?action=qwerty">';
echo '<div id="list">';
// Вставить сюда.
echo '</div>';

echo '<a onclick="insert();">';
echo 'Добавить еще изображение';
echo '</a>';

echo '<br>';

echo '<input type="submit" value="Загрузить" name="submit_form" />';
echo '</form>';
?>

Последний раз редактировалось St., 24.04.2016 в 17:22.
Ответить с цитированием
  #2 (permalink)  
Старый 25.04.2016, 06:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от St.
И вот проблема, надо повторно опять добавлять изображения.
Это не беда, а правильное поведение браузера.
Ответить с цитированием
  #3 (permalink)  
Старый 25.04.2016, 11:48
St. St. вне форума
Аспирант
Отправить личное сообщение для St. Посмотреть профиль Найти все сообщения от St.
 
Регистрация: 15.04.2016
Сообщений: 53

Сообщение от laimas Посмотреть сообщение
Это не беда, а правильное поведение браузера.
Как не беда?
Когда вставляешь 10-ть изображений 640x480, а одно изображение не 640х480 - а больше. Выводится сообщение о ошибке и кнопка вернуться назад:

echo '<a href="javascript:history.back()">Назад</a>';

Возврат назад происходит, но изображения приходиться вставлять заново. Для пользователя это не очень удобно.

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

Если кому интересно.
Код с ограничением по количеству вставляемых изображений, здесь (как делал я): http://forum.php.su/topic.php?forum=60&topic=6879
Изображения:
Тип файла: png example.png (38.5 Кб, 3 просмотров)

Последний раз редактировалось St., 25.04.2016 в 12:03.
Ответить с цитированием
  #4 (permalink)  
Старый 25.04.2016, 12:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А вот так. Поле file поле особое, это в textarea браузер может подставить ранее введенный текст, а в поле file нет, у него свойство value между прочим и то только для чтения.

Сбрасывайте то поле (если их несколько), в которое выбрано не удовлетворяющее условию, или отправляйте Ajax только те, что отвечают условию, если поле multiple, или распределяйте обязанности между клиентом и сервером, серверу ведь все равно проверять это вновь, если ошибки, то те, что ОК запомнить временно, вернуть ошибку, как все ОК, в каталог.

Заставить браузер поступать так как вы хотите - забудьте.
Ответить с цитированием
  #5 (permalink)  
Старый 25.04.2016, 15:05
St. St. вне форума
Аспирант
Отправить личное сообщение для St. Посмотреть профиль Найти все сообщения от St.
 
Регистрация: 15.04.2016
Сообщений: 53

У меня форма, а там есть кнопка отправить, после нажатия на кнопку выполняется другой файл php (action). А получится сделать так! Нажимаем на кнопку отправить, вызывается js и проверяет $_FILES, если ок, выполняется другой файл php. Иначе показать окно alert.

П.С.
Блин, не складываютcя другие моменты - не подходит такой вариант.
Просто, для интереса, с кнопкой отправить, можно сделать изврат?

Последний раз редактировалось St., 25.04.2016 в 15:12.
Ответить с цитированием
  #6 (permalink)  
Старый 25.04.2016, 16:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от St.
А получится сделать так! Нажимаем на кнопку отправить, вызывается js и проверяет $_FILES, если ок, выполняется другой файл php. Иначе показать окно alert.
Сообщение от St.
не подходит такой вариант.
Не какой-то там, а $_FILES, и говорите не подходит? А если я отправляю вам кучу вообще хлама, даже не изображения, а всякую хрень якобы картинки? И учтите, что будет подделан и реферер, и куки будут, не будет только одного - вашего JS с проверкой. Что тогда, примете на веру, что ваш JS проверил? Да за ради бога, нужен хлам, собирайте.

Кроме варианта сервер->клиент (а сервер просто обязан проверять, пофигу что там было на клиенте), я еще говорил о двух чисто клиентских решениях, в зависимости от того, что за поле/поля у формы.

Сообщение от St.
Просто, для интереса, с кнопкой отправить, можно сделать изврат?
Какой "изврат"?
Ответить с цитированием
  #7 (permalink)  
Старый 26.04.2016, 11:09
St. St. вне форума
Аспирант
Отправить личное сообщение для St. Посмотреть профиль Найти все сообщения от St.
 
Регистрация: 15.04.2016
Сообщений: 53

Блин. Сдаюсь.
Я не знаю возможностей JS, поэтому возникают куча проблем, как можно, а как нельзя. Я наверное откажусь от js, а вставку изображений напишу полностью на PHP, плюс там нет этой проблемы с возвратом назад. Хотел как лучше, а получилось как всегда.

Сделаю так (вставить изображений можно 7, и пепец...):

for ($x=0; $x<7; $x++)
    {
    echo '<input type="file" size="75" name="download[]" title="' . $txt['text_files_info'] . '">';
    }

Если есть другие варианты - напишите их здесь.
Наверное, тема закрывается...

Последний раз редактировалось St., 26.04.2016 в 11:44.
Ответить с цитированием
  #8 (permalink)  
Старый 26.04.2016, 15:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от St.
Я наверное откажусь от js, а вставку изображений напишу полностью на PHP, плюс там нет этой проблемы с возвратом назад.
Что в вашем понимании "вставка изображений"? Если речь идет о загрузке пользователями изображений на сервер, то каким же образом без клиента (Я наверное откажусь от js - с js, без него, это уже второй вопрос, он тут может выступать как помощник, а можно и без) это можно сделать?
Ответить с цитированием
  #9 (permalink)  
Старый 26.04.2016, 16:35
St. St. вне форума
Аспирант
Отправить личное сообщение для St. Посмотреть профиль Найти все сообщения от St.
 
Регистрация: 15.04.2016
Сообщений: 53

Цитата:
Если речь идет о загрузке пользователями изображений на сервер
Именно так.

Все ожидал, но это
Цитата:
Это не беда, а правильное поведение браузера
Блин, блин, блин.

П.С.
Попробывал JS+PHP - не получилось (проблема с возвратом назад), вернулся полностью на PHP (не совсем удобно)...
Если есть возможность, предложите свой вариант js+php для загрузки изображений (файлов) на сервер (клиентская часть). Пример бы на js+php...
Ответить с цитированием
  #10 (permalink)  
Старый 26.04.2016, 17:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Если Пример бы на js+php, то Ajax, я говорил об этом.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перейти на страницу с аякс-контентом по кнопке назад meAndreas Общие вопросы Javascript 17 15.02.2016 16:15