Автор Тема: Как передать даные с помощью JavaScript в CGI?  (Прочитано 3471 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AprilDay

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.eskizspb.ru
Нужно передать свойство объекта JS в CGI, так чтоб это выглядело так же, как при вставке CGI с помощью SSI.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как передать даные с помощью JavaScript в CGI?
« Ответ #1 : 17 Января 2004, 18:03:07 »
AprilDay
лучше расскажи про свою конкртеную задачу без общих слов.

Если в общем, то данные от JS можно передать cgi-скрипты тремя методами : GET, POST и cookie. Все 3 способа требуют перезагрзки страницы
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн AprilDay

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.eskizspb.ru
Как передать даные с помощью JavaScript в CGI?
« Ответ #2 : 17 Января 2004, 18:51:20 »
Вопрос возможно не только по JavaScript, поэтому был задан в общем, как один из вариантов решения проблемы. :)

Если конкретно, то мне нужно реализовать статистику по разрешению экрана.

С помощью переменных среды не получается, потому как нет такой переменной, во всяком случае в той версии Apache, которая установлена у меня и моего "хостера".

Передача значений из JavaScripta связанна с некоторыми трудностями. Потому как, организовать передачу свойства объекта screen т.о. как это выглядит когда используется SSI ()  у меня не получилось.







Формируется статистика с помощью такого кода.

#!/usr/bin/perl -w
use strict;
use CGI qw(:all);
use Fcntl qw(:flock);
use CGI::Carp qw(fatalsToBrowser);

sub isblock {
    open(SEM, ">files/sem")|| die "Невозможно создать sem: $!";
    flock(SEM, LOCK_EX)|| die "Блокировка невозможна: $!";
}

sub noblock {
    close(SEM);
}

sub razresh {
   my ($r, %razr, %razresh);
   
   isblock();  
   dbmopen(%razresh, "files/razresh", 0644);
   %razr=%razresh;
   
   $r=param(\'width\')." x ".param(\'height\');
     
   if ($razr{$r}) {
    $razresh{$r}++;
   } else {
    $razresh{$r}=1;
   }
     
   dbmclose (%razresh);
   noblock();    
}

print "Content-type: text/html\\n\\n";

razresh();

Выводится с помощью такого:

#!/usr/bin/perl -w
use strict;
use CGI qw(:all);
use CGI::Carp qw(fatalsToBrowser);

sub statistika {
    my (%razr, %razresh);
 
    dbmopen(%razresh, "files/razresh", 0644);
    %razr=%razresh;
    dbmclose (%razresh);
 
    print qq(\\t\\t

\\n);
 
    print qq(\\t\\tРАЗРЕШЕНИЕ

\\n);
 
    foreach (keys %razr) {
    print qq(\\t\\t$_ - $razr{$_}
\\n\\n)
 }

print "Content-type: text/html\\n\\n";

statistika();

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Как передать даные с помощью JavaScript в CGI?
« Ответ #3 : 17 Января 2004, 19:52:32 »
Через JavaScript IMHO изврат, так лучше не делать...

Чучше все-таки использовать SSI, а пременные окружения скрипту передаются так:


Оффлайн AprilDay

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.eskizspb.ru
Как передать даные с помощью JavaScript в CGI?
« Ответ #4 : 17 Января 2004, 20:01:56 »
Спасибо :)

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Как передать даные с помощью JavaScript в CGI?
« Ответ #5 : 17 Января 2004, 20:06:07 »
А какие это переменные окружения сервера содержат разрешение экрана у клиента?
AprilDay, ты ради интереса посмотри на код спайлоговского счетчика.
Все болезни от нервов, только сифилис от удовольствия

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28