У меня есть неудача, я делаю HTML-страницу с javascript, и я использую AJAX для вызова функций Perl.Дело в том, что когда моей программе на Perl не нужны параметры, вызов тривиален.Но у меня есть функция, позволяющая открывать и читать файл, поэтому мне нужно указать местоположение файла для сценария Perl, таким образом, передавая его через параметр в вызове AJAX.Бывший рабочий вызов:
function getOption(){
var selectmenu=document.getElementById("Select1")
selectmenu.onchange=function(){ //run some code when "onchange" event fires
var chosenoption=this.options[this.selectedIndex] //this refers to "selectmenu"
if (chosenoption.value!="nothing"){
var s = chosenoption.text;
openFile("C:\PerlTest\test.txt");
}
}
}
EX.не работает, пытаясь передать параметр:
function openFile(name){
XMLHttp.open("GET", "/cgi-bin/readFile.pl"+name, true);
XMLHttp.onreadystatechange = function() {
if (XMLHttp.readyState == 4) {
document.getElementById("TxtArea").innerHTML = XMLHttp.responseText;
}
}
XMLHttp.send(null);
}
Я пытаюсь передать пареметр таким образом из-за этого примера:
http://www.suite101.com/content/how-to-create-a-simple-perl-ajax-application-a136201
Кто-нибудь может помочь ??
Большое спасибо.
После предложения Кинопико, это имеет смысл, у меня есть следующее:
HTML-
function openFile(name){
XMLHttp.open("GET", "/cgi-bin/readFile.pl?file="+encodeURI(name), true);
XMLHttp.onreadystatechange = function() {
if (XMLHttp.readyState == 4) {
var container = XMLHttp.responseText.split("\n");
if (container.length>0){
for ( i=0; i< container.length-1;i++){
document.getElementById("TxtArea").innerHTML += container[i] + " ";
}
}
}
else{
document.getElementById("TxtArea").innerHTML = "333";//XMLHttp.responseText;
}
}
XMLHttp.send(null);
}
Perl скрипт:
#!c:/Perl/bin/perl
use strict;
use CGI qw/param/;
use URI::Escape;
print "Content-type: text/html\n\n";
my $file = param ('file');
$file = uri_unescape ($file);
open (MYFILE, $file);
while (<MYFILE>) {
chomp;
print "$_\n";
}
close (MYFILE);
Теперь я не получаю ошибку в javascript, но мой XMLHttp.readyState никогда не равен 4, поэтому я не получаю содержимое файла.
Может быть, я используюНеправильное кодирование ??
Спасибо.