2013-05-08 67 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