Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: AprilDay от 17 Января 2004, 17:21:47

Название: Как передать даные с помощью JavaScript в CGI?
Отправлено: AprilDay от 17 Января 2004, 17:21:47
Нужно передать свойство объекта JS в CGI, так чтоб это выглядело так же, как при вставке CGI с помощью SSI.
Название: Как передать даные с помощью JavaScript в CGI?
Отправлено: Макс от 17 Января 2004, 18:03:07
AprilDay
лучше расскажи про свою конкртеную задачу без общих слов.

Если в общем, то данные от JS можно передать cgi-скрипты тремя методами : GET, POST и cookie. Все 3 способа требуют перезагрзки страницы
Название: Как передать даные с помощью JavaScript в CGI?
Отправлено: AprilDay от 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();
Название: Как передать даные с помощью JavaScript в CGI?
Отправлено: Phoinix от 17 Января 2004, 19:52:32
Через JavaScript IMHO изврат, так лучше не делать...

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

Название: Как передать даные с помощью JavaScript в CGI?
Отправлено: AprilDay от 17 Января 2004, 20:01:56
Спасибо :)
Название: Как передать даные с помощью JavaScript в CGI?
Отправлено: Mog. от 17 Января 2004, 20:06:07
А какие это переменные окружения сервера содержат разрешение экрана у клиента?
AprilDay, ты ради интереса посмотри на код спайлоговского счетчика.