Вызов функции JavaScript из Perl - PullRequest
0 голосов
/ 06 января 2012

Это должно быть просто - не пойми, что я делаю неправильно!Это очень простой тест (я новичок в PERL и Javascript) - это файл CGI:

#! /usr/local/bin/perl

print "Content-type: text/html\n\n";
print "<html>\n" ;
print "<head>Hello\n";
print '<script type="text/javascript" language="javascript" src="wibble.js">\n';
print "</script>\n";
print "</head>\n";

print "<body>\n";

$fred = "Fred";
$numb = 7;

print <<TEST;

<p>Starting...</p>
<p><script type="text/javascript" language="javascript">
theText = "$fred";
theNum = "$numb";
document.writeln("Direct write...");
document.writeln("Number is: " + theNum);
document.writeln("Text is: " + theText);

testWrite(theNum, theText);

</script></p>

<p>...ending JS</p>

TEST

и в wibble.js:

function testWrite(num1, txt1)
{
   document.writeln("In testWrite...");
   document.writeln("Number is: " + num1);
   document.writeln("Text is: " + txt1);
}

В моем браузереЯ получаю первый набор писем, но моя функция никогда не вызывается.Ошибка на веб-странице говорит: «Объект ожидается» в строке 15 (строка 'print <<TEST').

В основном я подозреваю, что у меня нет правильного пути в моем элементе src, но я пробовал каждую комбинацию, которую яможет придумать ('.', './', полный путь и т. д.) - ничего не работает.Файл js находится в том же каталоге, что и файл CGI.

(у меня изначально был вызов функции без параметров, в надежде, что theNum и theText являются глобальными и будут работать (это было исходной точкой этоготестовая программа)).

Пожалуйста, избавьте меня от моих страданий ...

В соответствии с просьбой, вот исходный код из браузера:

<html>
<head><script type="text/javascript" language="javascript" src="wibble.js"></script>
</head>
<body>

<p>Starting...</p>
<p><script type="text/javascript" language="javascript"> 
theText = "Fred";
theNum = "7";
document.writeln("Direct write...");
document.writeln("Number is: " + theNum);
document.writeln("Text is: " + theText);

testWrite(theNum, theText);

</script></p>

<p>...ending JS</p>

</body>
</html>

и этофактический вывод на веб-странице:

Starting...

Direct write... Number is: 7 Text is: Fred 

...ending JS

1 Ответ

3 голосов
/ 06 января 2012

Проверяли ли вы журнал вашего сервера, чтобы узнать, запрашивается ли когда-нибудь файл wibble.js?Если это не так, то есть ваша проблема.Кроме того, хотя на самом деле это не проблема, эта строка:

print "<head>Hello\n";

генерирует плохой HTML.Вы не можете иметь «голый» текст в блоке <head>.

Для глобальных переменных JS используйте ключевое слово var.

x = 7; // local
var y = 7; // global
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...