我的$ .ajax正在调用一个Perl文件,它在fetchall_arrayref
中从MySQL返回数据。
如何将数据恢复到ajax并放入jQuery中的<select>
下拉选项?它从perl返回一些东西,但<select>
下拉列表显示整个ajaxFunctions.pl
文件,char by char - 每个char都是一个选择。它需要调用Perl文件,在那里执行mySQL SELECT,并将SELECT查询结果返回给$.ajax
&#34;数据&#34;部分,以便我可以在GUI中显示它。我测试了MySQL查询工作正常[返回3项,组名]。
以下是perl代码:
if ($q->param('ajaxAction') eq "getGroups") {
my $return;
eval {
my $query = qq(SELECT DISTINCT group FROM dbtable ORDER BY group);
my $dbh = dbConnect();
my $sth = $dbh->prepare($query);
$sth->execute();
$return = $sth->fetchall_arrayref();
};
if ($@) {
$return = {'STATUS' => 'FAIL',
'ERROR' => 'Error getting the group names. ' . $@};
}
print $q->header('application/json');
print to_json($return);
exit(0);
}
这是Javascript代码:
function getGroups() {
$.ajax({
type: 'POST',
url: '/Project/metrics/cgi-bin/ajaxFunctions.pl',
data: ({ ajaxAction: 'getGroups'}),
success: function(data) {
for(var i =0; i < data.length; i++) {
$("#groupReportSelect").append('<option value="' + data[i] + '"> ' + data[i] + '</option>');
}
$('#groupReportSelect').multiselect();
$("#groupReportSelect").multiselect("checkAll");
getData();
},
error: function(request, status, err) {
console.log('Error fetching groups. ' + err);
}
});
}
同样,输出是select中的每个选项都是整个perl文件的单个字符,从"#", "!", "/", of #!/usr/bin/perl
,等开始。
如果我遗漏了任何东西,请告诉我。我已阅读其他几篇文章,并试图向您提供所有适当的数据来回答我的问题。
答案 0 :(得分:1)
您尚未将服务器配置为运行Perl程序,因此它将以纯文本形式返回。
您需要查阅网络服务器的文档,了解如何执行该程序。
您似乎正在编写CGI(不要这样做,编写PSGI,然后使用CGI处理程序进行部署,如果它确实需要CGI),那么请将其用作手册中的搜索词。
答案 1 :(得分:1)
您的AJAX请求似乎是获取对象的url:
属性(即 '/Project/metrics/cgi-bin/ajaxFunctions.pl',
)中列出的整个perl文件,而不是REQUEST
的输出到那个URI。
这很可能是由于您的CGI和HTTP服务器环境设置不当造成的。您的Web服务器需要设置CGI Handler
才能正确地将.pl
个文件作为应用程序而非文件提供。