Программирование > JavaScript & JScript
Как передать даные с помощью JavaScript в CGI?
AprilDay:
Нужно передать свойство объекта JS в CGI, так чтоб это выглядело так же, как при вставке CGI с помощью SSI.
Макс:
AprilDay
лучше расскажи про свою конкртеную задачу без общих слов.
Если в общем, то данные от JS можно передать cgi-скрипты тремя методами : GET, POST и cookie. Все 3 способа требуют перезагрзки страницы
AprilDay:
Вопрос возможно не только по JavaScript, поэтому был задан в общем, как один из вариантов решения проблемы. :)
Если конкретно, то мне нужно реализовать статистику по разрешению экрана.
С помощью переменных среды не получается, потому как нет такой переменной, во всяком случае в той версии Apache, которая установлена у меня и моего "хостера".
Передача значений из JavaScripta связанна с некоторыми трудностями. Потому как, организовать передачу свойства объекта screen т.о. как это выглядит когда используется SSI () у меня не получилось.
Пробовала сформировать эту строчку с помощью innerHTML. Эффект был, но он оказался каким-то нестабильным. На моем сервере все работает, а на сервере "хостера" через раз, причем чаще не работает.
Как я понимаю эта строчка выполняется на стороне клиента. Так что возможно, что сервер здесь вообще не причем (если не считать исполнение CGI).
Выглядело это так:
function razresh() {
razr.innerHTML="\\\\";
}
Формируется статистика с помощью такого кода.
#!/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:
Через JavaScript IMHO изврат, так лучше не делать...
Чучше все-таки использовать SSI, а пременные окружения скрипту передаются так:
AprilDay:
Спасибо :)
Навигация
Перейти к полной версии