【问题标题】:TypeError: div is null类型错误:div 为空
【发布时间】:2013-07-20 01:36:57
【问题描述】:

基本上我想在执行程序时将数据从 fetch_javaScript 函数传递到 database_fetch 我得到以下错误 TypeError: div is null

有时我可以传递数据 database_fetch 函数,但无法找到准备。

    use strict;
    use CGI;
    use DBI;
    use Data::Dumper;
    require ("/usr/local/lib/perl5/site_perl/5.8.8/Class/Accessor.pm");
    require ("/usr/local/lib/perl5/site_perl/5.8.8/CGI/Ajax.pm");

    my $p = new CGI qw(header start_html end_html h1 script link);
    my $ajax = new CGI::Ajax( 'fetch_javaScript' => my $database_fetch );

    $p->header(-charset=>'US-ASCII');
    print $ajax->build_html($p,\&generateHTML);

sub generateHTML
        {
        my %lable_fund=("Select"=>"Select",
                        "PMF"=>"PMF",
                        "PRAMERICA"=>"PRAMERICA",
                        "DHL"=>"DHL",
                        "EMF"=>"Edelweiss MF"
                        );
         my %lable_agent=("Select"=>"Select",
                        "Gyanesh"=>"Gyanesh",
                        "Satish"=>"Satish",
                        "Sailesh"=>"Sailesh",
                        "ArchanaMuluguru"=>"Archana",
                        "Santosh"=>"Santosh",
                        "Priyanka"=>"Priyanka"
                        );

        my $datepicker = "datetimepicker.js";
        my $jquery = "cal.gif";

        print $p->header();
        print $p->start_html('MFS CALL CENTER');
        print $p->h3('MFS CALL RECORDINGS');

        print $p->start_html(-title=>'What we think we become',

                     -text=>'black',
                     -bgcolor=>'Gray',
                     -lang => "javascript",
                     -script => [{ -type => 'image/gif',
                                   -src => $jquery },
                                 { -type => 'text/javascript',
                                   -src => $datepicker },
                                ],
                     );

        print "Fund Name      ",$p->popup_menu(-name=>'fund',
                                -id => 'fund1',
                                -values  =>['Select','PMF','PRAMERICA','JM','DHL','EMF'],
                                -default => 'Select',
                                -multiple=>'true',
                                -labels  =>  \%lable_fund),"\n";

        print "<P>";
        print "Agent Name     ",$p->popup_menu(-name=>'agent',
                                -id => 'agent1',
                                -values=>['Select','Gyanesh','Satish','Sailesh','ArchanaMuluguru','Santosh','Afreen','Salman','Balaji','Priyanka'],
                                -default => 'Select',
                                -multiple=>'true',
                                -labels  => \%lable_fund),"\n";


 print "<P>";

        print "From Date ", qq`<input name="timestamp" id="demo3" type="text" size="18"><a href="javascript:NewCal('demo3','ddmmmyyyy',true,24)"><img src="cal.gif" width="16" height="16" border="0" alt="Pick a date"></a>`;


        print " To Date ", qq`<input name="timestamp1" id="demo4" type="text" size="18"><a href="javascript:NewCal('demo4','ddmmmyyyy',true,24)"><img src="cal.gif" width="16" height="16" border="0" alt="Pick a date"></a>`;
        print "<P>";


        print $p->button(-name=>'Submit',-value=>'Submit',-onclick=>"fetch_javaScript(['fund1','agent1','demo3','demo4'],['id1','id2','id3','id4','id5'],'GET');return true;");
        print $p->end_html;
        }


$database_fetch =sub
                {

                my @Details;
#               my ($service_name,$agent_name,$call_start_time,$call_end_time);

                my $service_name = shift;
                my $agent_name=shift;
                my $call_start_time=shift;
                my $call_end_time=shift;
#               print "$service_name ","$agent_name","$call_start_time ","$call_end_time ";
                my $call_rec_file_name;

                my $DSN = q/dbi:ODBC:SQLSERVER/;
                my $uid = q/ivr/;
                my $pwd = q/ivr/;
                my $DRIVER = "Freetds";
                my $dbh = DBI->connect($DSN,$uid,$pwd) or die "Coudn't Connect SQL";
                my $servernumber = 2;

                my $sql_fund=("select count '$service_name' from cti_services  where service_name='$service_name'");
                my $fund_count;
                my $sql_fund1 = $dbh->prepare($sql_fund);
                $sql_fund1->execute();
                $sql_fund1->bind_columns(\$fund_count);
                $sql_fund1->fetch;

                my $sql_agent=("select count(agent_name) from cti_agents where agent_name=?");
                my $agent_count;
                my $sql_agent1 = $dbh->prepare($sql_agent);
                $sql_agent1->execute($agent_name);
                $sql_agent1->bind_columns(\$agent_count);
                $sql_agent1->fetch;


                if( $fund_count == 1 && $agent_count == 1 )
                        {
                        my $sql="select top(10) service_name,agent_name,call_rec_file_name,call_start_time,call_end_time from cti_agents join  cti_call_master on (agent_name = call_agent_name) join cti_services on (call_service_id = service_id) where agent_name = 'Sailesh' and call_rec_file_name is not null";
                        my $sth = $dbh->prepare($sql);


 while (my @data = $sth->fetchrow_array())
                                {
                                @Details=@data;
                        return @Details;

                                }
                        }

}

提前致谢

【问题讨论】:

  • 你为什么要这样使用requireuse Class::Accessor 不行吗?
  • 当我像这样使用 use Class::Accessor 我得到错误 can't locate Class/Accessor.pm
  • 那么您正在使用为不同的 Perl 安装构建的库。您应该再次安装这些模块并使用use 正确编写代码。

标签: ajax perl cgi


【解决方案1】:

在分配之前,您正在使用$database_fetch。您应该将调用更改为

my $ajax = CGI::Ajax->new(fetch_javaScript => \&database_fetch);

和子程序定义到

sub database_fetch {
  ...
}

【讨论】:

  • 同样的问题,当我按照上面的方法进行操作时。请告诉我有什么问题给方法$ajax = new CGI::Ajax( 'fetch_javaScript' =&gt; my $database_fetch );和子程序定义$database_fetch =sub { .... }
  • 正如我所说,你在 $database_fetch 之前使用它没有任何价值,因为分配出现在调用之后。无论如何,使用子程序是一种奇怪的方式:为什么要使用匿名子程序而不是普通的命名子程序?
猜你喜欢
  • 2014-01-10
  • 1970-01-01
  • 2015-03-06
  • 2020-06-21
  • 1970-01-01
  • 2013-11-29
  • 2012-06-13
  • 2013-03-07
相关资源
最近更新 更多