2013-05-08 63 views
0

我想知道是否有一种方法,我的index.html可以调用perl处理程序来加载index.html中的数据表。没有JQuery,但我可以使用Javascript。我应该怎么做呢?截至目前,我只是在perl处理程序中打印一些html,但如果不必这样做,我真的不喜欢这样做。所以基本上,有没有一种方法可以从perl cgi处理程序获取数据,并将该数据加载到html数据表中。感谢提示/建议。通过Perl加载Html Datatable

我在做什么,现在只是调用使用handler:

<form action="http://myExampleHandler.pl.cgi" method="get"> 

     <input type="submit" value="GO" /> 
    </form> 

的Perl:

$dtd = 
     "-//W3C//DTD XHTML 1.0 Transitional//EN\" 
    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"; 

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

print(start_html({ dtd => $dtd, 
       title => "Database mySQL example" })); 
print "Ok let\'s start...<p>"; 

$dbh = DBI->connect('dbi:mysql:MyDbName','MyUserName','MyPassword') 
or die "Connection Error: $DBI::errstr\n"; 
$sql = "select * from Animal"; 
$sth = $dbh->prepare($sql); 
$sth->execute 
or die "SQL Error: $DBI::errstr\n"; 

#@data = $sth->fetchrow_array(); 

#print header; 
#print "Content-Type: text/html\n\n"; 

print "<table width=\"900\"> \n"; 

print "<tr><td></td><td>Name</td><td>Type</td><td></td></tr>\n"; 

my($animalId, $animalName, $animalType); 

while (@row = $sth->fetchrow_array) { 
    $animalId = $row[0]; 
    $animalName = $row[1]; 
    $animalType = $row[3]; 

    print "<tr><td></td><td>$animalName</td><td>$animalType</td><td></td></tr>\n"; 
} 

print "</table>\n"; 

print(end_html()); 

我想我的首选方法是将一个javascript调用该处理程序,并有处理程序传回数组或json中的所有行。然后很简单,我只需要将数据加载到数据表中即可。

回答

0

当然。 jQuery是用JavaScript编写的,所以jQuery所做的任何事情都可以在javascript中完成。你需要发送一个XMLHttpRequest(或者更通俗的说:一个AJAX请求)到你的perl程序。你的Perl程序可以发回任何字符串作为回应。您的js代码可以读取该字符串,然后将其插入(或其他任何内容)到您的html表格中 - 所有这些都不需要重新加载新页面。

+0

你可以用任何方式显示使用它的例子吗?我之前使用jquery ajax,但不是javascript方式,如果它不同。我可以继续在perl中使用“打印”吗?或者有没有一种方法可以将数据发送回index.html? – TMan 2013-05-08 02:27:06

+0

诀窍是让它跨浏览器,这意味着你必须做很多不同的检查。这里是一个教程(数千):http://net.tutsplus.com/articles/news/how-to-make-ajax-requests-with-raw-javascript/。你的perl脚本不知道谁写了发送请求的javascript程序:你是jQuery程序员。 – 7stud 2013-05-08 02:29:45

+0

请注意,该教程中的整个函数如何简化为jQuery中的一行代码(最后包含jQuery行) – 7stud 2013-05-08 02:39:11