gpt4 book ai didi

mysql - 使用 PERL 和 jquery-ajax 检索 mysql 数据

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:22 25 4
gpt4 key购买 nike

我正在创建一个包含 3 个基本元素的网页:选择框、按钮和表格。从高层次来看,用户选择一个元素,然后单击按钮。单击该按钮时,将执行 PERL 脚本,将数据放入 mySQL 数据库的表中。所有这些都很成功。

现在,我正在尝试使用动态表将数据库表值返回到我的 HTML 文件中。但是我找到的每个来源都有我的 CGI 文件编写 html 标签。我觉得这是不对的,因为我不明白我的 CGI 知道表 ID,即使我正在传递值。另外,我知道我的 js 文件不正确,有两个单独的 AJAX 调用,但这是我在脑海中逻辑处理的家。

我不确定先修复 CGI 还是 JS 文件。

HTML 代码 (index.html):

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js" charset="utf-8"></script>
<script type="text/javascript" class="jsbin" src="C:/xampp/DataTables/media/js/jquery.dataTables.js" charset="utf-8"></script>
<script type="text/javascript" src="js/main.js" charset="utf-8"></script>
<script type="text/javascript" src="js/RunPerlScript.js" charset="utf-8"></script>
<script type="text/javascript" src="js/table.js" charset="utf-8"></script>
</head>
<body>
<header>
<h1></h1>
</header>
<form name="myForm" method="GET" action="">
<select id="cdLDAP" >
<option/>
</select>
<input type="button" id="btn_run" name="btn_run" value="Run"></input>
</form>
<table id="results_table">
<thead>
<tr>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</tbody>
</table>
</body>
</html>

Perl (CGI):

 #!/usr/bin/perl -T
use CGI;
use DBI;
use strict;
use warnings;

# read the CGI params
my $cgi = CGI->new;
my $inputselection = $cgi->param("cdLDAP");
my $html_table = $cgi->param("html_table_results");
my ($base_dn, $tblname);
#my $password = $cgi->param("password");

#my $inputselection = "Disabled Users";
#LDAP Connection parameters
if ($inputselection eq "Disabled Users") {
$base_dn = "";
$tblname = "disabled_user";
} elsif ($inputselection eq "") {
$base_dn = "";
$tblname = "service_account";
} elsif ($inputselection eq "") {
$base_dn = "";
$tblname = "";
} else {
die;
}

# connect to the database
my ($platform,$database,$host,$port,$db_user,$pw) = ("mysql","results","localhost","3306","resultsuser","mysql123");
my $dsn = "DBI:$platform:database=$database,host=$host,port=$port";
my $connect = DBI->connect("DBI:mysql:database=$database;host=$host",$db_user,$pw,{RaiseError => 1});

#query db to get results set for table output
my $query_results = "SELECT * FROM " . $tblname;
my $query_handle = "";
$query_handle = $connect->prepare($query_results) or die $connect->errstr;
$query_handle->execute() or die $query_handle->errstr;

print header;
# HTML for the beginning of the table
# we are putting a border around the table for effect
print "<table border=\"1\" width=\"800\"> \n";

# print your table column headers
print "<tr><td>User ID</td><td>Status</td><td>Last Password Reset</td><td>Reset Needed?</td></tr>\n";

my (@data,$uid,$status,$pwlstset,$resetmsg);

# retrieve the values returned from executing your SQL statement
foreach (@data = $query_handle->fetchrow_array()) {
$uid = $data[0];
$status = $data[1];
$pwlstset = $data[2];
$resetmsg = $data[3];

# print your table rows
print "<tr><td>$uid</td><td>$status</td><td>$pwlstset</td><td>$resetmsg</td></tr>\n";

}

# close your table
print "</table>\n";

# exit the script
exit;

JS/JQuery/AJAX:

$(function() {
$('#btn_run').click(function() {
var tblname = $('#cdLDAP').val();
var html_table = $('#results_table').attr('id');
$.ajax({
type: "GET",
url: "/perl/cgitest.pl", // URL of the Perl script that queries LDPA and inputs to mySQL
data: "cdLDAP=" +tblname,
// script call was *not* successful
error: function() {
alert("ERROR!");
}, // error
// script call was successful
// data contains the JSON values returned by the Perl script
success: function(data){
alert("success!");
} // success
}); // ajax
$.ajax({
type: "GET",
url: "/perl/cgitest2.pl", // URL of the Perl script that retirves data from mySQL
data: "cdLDAP=" +tblname +",html_table_results=" +html_table,
// script call was *not* successful
error: function() {
alert("ERROR!");
}, // error
// script call was successful
// data contains the JSON values returned by the Perl script
success: function(data){
alert("success!");
} // success
}); // ajax
});
});

所以我需要一些帮助:1) 我的 PERL 脚本应该写 html 标签吗?如果是,我如何写入 index.html 而不是新的 html 文件?2) 如果表结构是由 jquery 文件创建的,一个好的教学资源将不胜感激,因为我正在努力学习如何钓鱼,而不是给鱼。

最佳答案

Should my PERL script be writing the html tags?

no such thing as PERL .

如果您想使用 Ajax 动态更新页面(注意您应该使用 unobtrusive JavaScript ),那么您可以采用两种基本方法:

  1. 服务器以干净的数据结构(可能是 JSON)返回数据
  2. 服务器返回一段 HTML

我通常赞成前一种方法(在这种情况下,您将在 Perl 中构建一个哈希引用数组,通过 a JSON module 运行它,然后使用 application/json 输出它内容类型 HTTP header 。

鉴于某些版本的 Internet Explorer 在尝试编辑表格元素的 innerHTML 时存在问题,这使得第一个选项更好。

If yes, how do I write to index.html and not a new html file?

您根本不写入文件。您通过 STDOUT 返回数据,网络服务器将其传回给客户端。

If the table structure is created by the jquery file, a good teaching source would eb appreciated

http://api.jquery.com/category/manipulation/

关于mysql - 使用 PERL 和 jquery-ajax 检索 mysql 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10248777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com