Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с iframe.
 
 автор: maloi_m3   (16.09.2010 в 07:05)   письмо автору
 
 

Доброго всем времени суток, возникла проблема, после того как форма отправляет данные, java открывает прогресс загрузки в новом окне.
А мне нужно, что-бы открывала в в iframe под формой.
Насколько я понимаю за открытия отвечают вот эти строки.


      win1 = window.open(f1.action.split('upload.cgi')[0]+'upload_status.cgi?upload_id='+UID,'win1','width=320,height=240,resizable=1');
      win1.window.focus();


Вот сама страница где всё происходит.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<Title></Title>
<META http-equiv=Content-Type content="text-html; charset=UTF-8">
<Script language="JavaScript" type="text/javascript">

//var exts = "jpg|gif|png|bmp|mp3|mpg|mpeg|avi|rar|zip|7z|gz|txt|avi|mpg";
var exts = ".*"; //Use this to accept all Extensions

function StartUpload(f1)
{
    if(f1.file_1.value==""){alert('Select at least one file to upload');return false;};
    if(!checkExt(f1.file_1.value))return false;
    var UID = Math.round(10000*Math.random())+'0'+Math.round(10000*Math.random());
    f1.action = f1.action.split('?')[0]+'?upload_id='+UID;
    if(f1.popup.checked)
    {
      win1 = window.open(f1.action.split('upload.cgi')[0]+'upload_status.cgi?upload_id='+UID,'win1','width=320,height=240,resizable=1');
      win1.window.focus();
    }
    return true;
}

function checkExt(value)
{
    if(value=="")return true;
    var re = new RegExp("^.+\.("+exts+")$","i");
    if(!re.test(value))
    {
        alert("This file extension is not allowed: \n" + value + "\n\nOnly these extensions are allowed: "+exts.replace(/\|/g,',')+" \n\n");
        return false;
    }
    return true;
}
</Script>
</HEAD>
<BODY style="background-color: #f9f9f9;font:13px Arial;text-align:center;">

<form enctype="multipart/form-data" action="/cgi-bin/upload.cgi?upload_id=" method="post" onSubmit="return StartUpload(this);" target="xupload">
Send file: <input name="file_1" type="file" onChange="checkExt(this.value)"><br>
Comment: <input type="text" name="comment">(optional)
<br><br>
<Input type="checkbox" name="popup" checked id="popup"><label FOR="popup" ACCESSKEY="Z">Show upload status in pop-up window</label><br>
<br>
<input type="submit" value="Upload File">
</form>
<br><br>

<iframe src="about:blank" name="xupload" style="position:absolute;left:-9999px;"></iframe>


</BODY>
</HTML>


Прошу помощи в решение проблемы, не силён я в ЯВЕ.

  Ответить  
 
 автор: mihdan   (16.09.2010 в 17:42)   письмо автору
 
   для: maloi_m3   (16.09.2010 в 07:05)
 

Java тут и не пахнет! Код на чистом JavaScript.
Так в чем у вас сложность?

  Ответить  
 
 автор: sim5   (16.09.2010 в 17:59)   письмо автору
 
   для: maloi_m3   (16.09.2010 в 07:05)
 

win1 = window.open(f1.action.split('upload.cgi')[0]+'upload_status.cgi?..... никакого отношения к iframe на странице не имеет. В него будет загружен результат обращения к странице "/cgi-bin/upload.cgi?upload_id=" указанной в action формы, и это определяет атрибут target формы.

  Ответить  
 
 автор: ~AquaZ~   (16.09.2010 в 18:47)   письмо автору
 
   для: sim5   (16.09.2010 в 17:59)
 

<a ... target=iframe_name>...</a>

  Ответить  
 
 автор: sim5   (16.09.2010 в 18:59)   письмо автору
 
   для: ~AquaZ~   (16.09.2010 в 18:47)
 

Хрень только всякую не надо писать - речь идет о конкретном коде.

  Ответить  
 
 автор: maloi_m3   (16.09.2010 в 19:53)   письмо автору
 
   для: sim5   (16.09.2010 в 17:59)
 

Здравствуйте, на данный момент как всё работает я понимаю, я прошу вас подправить код, чтоб обработчик: /cgi-bin/upload.cgi?upload_id=, открывался под формой, а не в новом окне, надеюсь доходчиво изложил.

  Ответить  
 
 автор: sim5   (16.09.2010 в 21:17)   письмо автору
 
   для: maloi_m3   (16.09.2010 в 19:53)
 

Запустите этот файл на локальном сервере:
<html>
<body>
<script>
function f() {
window.open("http://softtime.ru/forum/read.php?id_forum=4&id_theme=76205",'',''); 
}
</script>
<form action="frm.php" method="post" onsubmit="return(f())" target="ifrm">
<input type="text" name="as" value="AS">
<input type="submit" value="Send">
</form>
<iframe name="ifrm" id="ifrm"></iframe>
</body>
</html>
и разместив на нем же этот код в файле под именем frm.php:
<? echo '<hr width="100%">' $_POST['as']; ?>
Что наблюдаем?
Я вам вроде бы тоже доходчиво изложил, что на помещение ответа сервера в iframe, в вашем коде, также указывает атрибут target вашей формы и ответ в него помещенный будет от той страницы, которая указана в теге action фомы.
В окне, которое у вас открывается, насколько можно понять, отображается процесс/статус загрузки файла на сервер, и формируется случаное значение для upload_id. Вы что хотите, чтобы в ваш iframe попадал не ответ результата загрузки (можно предположить, что именно это должно быть), а статус загрузки?

  Ответить  
 
 автор: maloi_m3   (16.09.2010 в 22:36)   письмо автору
 
   для: sim5   (16.09.2010 в 21:17)
 

Вы что хотите, чтобы в ваш iframe попадал не ответ результата загрузки (можно предположить, что именно это должно быть), а статус загрузки?

Да, вы правильно предположили, мне нужно выводить не результат, а сам процесс.
Вот код в действии: http://loomber.com/upload_form.html
Как видите, сам процесс открылся в новом окне, а хочу чтоб форма оставалась на месте и процесс открывался под ней, а не в новом окне.

  Ответить  
 
 автор: sim5   (17.09.2010 в 02:54)   письмо автору
 
   для: maloi_m3   (16.09.2010 в 22:36)
 

А что в данном случае процесс, что в нем интересного, кроме как принудительный вывод какой либо картинки с надписью "Ждите...". А сам процесс, это невидимый для пользователя ток, который мееедленно идет по проводам. ;-) Да и отображается у вас не "ток", а результат его "прибытия" (в указанной ссылке).
Убирайте чекбокс, выбрасывайте открытие окна в функции, оставьте только проверку выбора файла и добавление случайного числа адресу (если нужно):
function StartUpload(f1) {
  if(f1.file_1.value==""){alert("Select at least one file to upload");return false;};
  var UID = Math.round(10000*Math.random())+'0'+Math.round(10000*Math.random());
  f1.action += UID;
}
Выдачу результата загрузки, выполняемую серверным скриптом upload_status.cgi, переместите в скрипт upload.cgi, она и будет возвращена пользователю (если конечно загрузка будет ОК), в iframe .

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования