LINUX.ORG.RU

Сообщения jonny23

 

Webform: onclick не дожидается, пока выполнится cgi-скрипт

Вебстраница (index1.html)

<html>
  <body>
    <img src="pic.gif">
    <form action="../cgi-bin/update_pic1.cgi" method="get">
      <input type=submit value="Update Pic">
    </form>
  </body>
</html>
состоит из gif-картинки и вебформы, которая выполняет cgi-script (update_pic1.cgi)
#!/bin/bash
echo "Content-type: text/html"
echo ""
sleep 2
gnuplot plot_pic.gp
echo "<html><body>"
echo "<script>location.href='///localhost/index1.html'</script>"
echo "</body></html>"
создающий новую gif'ку (это делает gnuplot). В связи с этим возникает известная проблема: вместо перезагрузки только gif'ки приходится перезагружать всю страницу, чего хотелось бы избежать. Для решения проблемы я разделил страницу (index2.html) на два фрейма
<html>
    <frameset rows="90%,*">
      <frame src="main.html">
      <frame src="hidden.html" name="hidden">
    </frameset>
</html>
в один из который я поместил картинку и форму (main.html)
<html>
  <head><script>
      function updatePic(){
      var pic=document.getElementById("pic");
      pic.src="pic.gif"
      }
  </script></head>
  <body>
    <img src="pic.gif" id="pic">
    <form action="../cgi-bin/update_pic2.cgi" method="get"    target="hidden" onclick="return updatePic()">
      <input type=submit value="Update Pic">
    </form>
  </body>
</html>
а другую (hidden.html) оставил для перенаправления cgi-вывода
<html>
  <body>
  </body>
</html>
Таким образом, я избавлен от необходимости перезагружать всю main.html. Вместо этого я прошу просто перезагрузить изображение функцией onclick. Однако, в этом случае возникает другая проблема: onclick перезагружает картинку до того, как cgi скрипт её нарисует. Как заставить картинку перезагрузиться только после того, как cgi скрипт её нарисует?

Я был бы очень рад, если бы решение было ограничено 5-ю строками кода bash, js или с++, и без использования perl и AJAX.

 , ,

jonny23
()

CGI не выполняется

Триста раз проверил по апачевскому мануалу httpd.conf, permissions - ну всё правильно. Но Firefox выдаёт только текст сgi-файла.

На всякий случай, содержание httpd.conf:

AddHandler cgi-script .cgi .pl

<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride All
    Options +ExecCGI
    Order allow,deny
    Allow from all
</Directory>

first.cgi:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";

Сам файл запускается из командной строки и ведёт себя правильно.

 

jonny23
()

RSS подписка на новые темы