courierb has asked for the wisdom of the Perl Monks concerning the following question:

Hi monks,

As i did before. i try to play around with datatables from
http://www.datatables.net/release-datatables/examples/server_side/server_side.html

so i picked up a easy sample from the site to practice. I have copy a js to local server. and amke a minor change to server_side.html i just change
"sAjaxSource": "scripts/server_processing.php"
to
"sAjaxSource": "scripts/server_processing.cgi"

So what i should do is make server_processing.cgi to reutrn a valid json response to javascripts. your could get php's response from http://www.datatables.net/release-datatables/examples/server_side/scripts/server_processing.php and it also published on the site as well. http://www.datatables.net/release-datatables/examples/server_side/server_side.html

here is how i did in perl

#!c:/perl/bin/perl.exe ## test use CGI; use strict; use warnings; my $json = '{"sEcho":0,"iTotalRecords":"57","iTotalDisplayRecords":"57 +","aaData":[["Trident","Internet Explorer 4.0","Win 95+","4","X"],["T +rident","Internet Explorer 5.0","Win 95+","5","C"],["Trident","Intern +et Explorer 5.5","Win 95+","5.5","A"],["Trident","Internet Explorer 6 +","Win 98+","6","A"],["Trident","Internet Explorer 7","Win XP SP2+"," +7","A"],["Trident","AOL browser (AOL desktop)","Win XP","6","A"],["Ge +cko","Firefox 1.0","Win 98+ \/ OSX.2+","1.7","A"],["Gecko","Firefox 1 +.5","Win 98+ \/ OSX.2+","1.8","A"],["Gecko","Firefox 2.0","Win 98+ \/ + OSX.2+","1.8","A"],["Gecko","Firefox 3.0","Win 2k+ \/ OSX.3+","1.9", +"A"],["Gecko","Camino 1.0","OSX.2+","1.8","A"],["Gecko","Camino 1.5", +"OSX.3+","1.8","A"],["Gecko","Netscape 7.2","Win 95+ \/ Mac OS 8.6-9. +2","1.7","A"],["Gecko","Netscape Browser 8","Win 98SE+","1.7","A"],[" +Gecko","Netscape Navigator 9","Win 98+ \/ OSX.2+","1.8","A"],["Gecko" +,"Mozilla 1.0","Win 95+ \/ OSX.1+","1","A"],["Gecko","Mozilla 1.1","W +in 95+ \/ OSX.1+","1.1","A"],["Gecko","Mozilla 1.2","Win 95+ \/ OSX.1 ++","1.2","A"],["Gecko","Mozilla 1.3","Win 95+ \/ OSX.1+","1.3","A"],[ +"Gecko","Mozilla 1.4","Win 95+ \/ OSX.1+","1.4","A"],["Gecko","Mozill +a 1.5","Win 95+ \/ OSX.1+","1.5","A"],["Gecko","Mozilla 1.6","Win 95+ + \/ OSX.1+","1.6","A"],["Gecko","Mozilla 1.7","Win 98+ \/ OSX.1+","1. +7","A"],["Gecko","Mozilla 1.8","Win 98+ \/ OSX.1+","1.8","A"],["Gecko +","Seamonkey 1.1","Win 98+ \/ OSX.2+","1.8","A"],["Gecko","Epiphany 2 +.20","Gnome","1.8","A"],["Webkit","Safari 1.2","OSX.3","125.5","A"],[ +"Webkit","Safari 1.3","OSX.3","312.8","A"],["Webkit","Safari 2.0","OS +X.4+","419.3","A"],["Webkit","Safari 3.0","OSX.4+","522.1","A"],["Web +kit","OmniWeb 5.5","OSX.4+","420","A"],["Webkit","iPod Touch \/ iPhon +e","iPod","420.1","A"],["Webkit","S60","S60","413","A"],["Presto","Op +era 7.0","Win 95+ \/ OSX.1+","-","A"],["Presto","Opera 7.5","Win 95+ +\/ OSX.2+","-","A"],["Presto","Opera 8.0","Win 95+ \/ OSX.2+","-","A" +],["Presto","Opera 8.5","Win 95+ \/ OSX.2+","-","A"],["Presto","Opera + 9.0","Win 95+ \/ OSX.3+","-","A"],["Presto","Opera 9.2","Win 88+ \/ +OSX.3+","-","A"],["Presto","Opera 9.5","Win 88+ \/ OSX.3+","-","A"],[ +"Presto","Opera for Wii","Wii","-","A"],["Presto","Nokia N800","N800" +,"-","A"],["Presto","Nintendo DS browser","Nintendo DS","8.5","C\/A<s +up>1<\/sup>"],["KHTML","Konqureror 3.1","KDE 3.1","3.1","C"],["KHTML" +,"Konqureror 3.3","KDE 3.3","3.3","A"],["KHTML","Konqureror 3.5","KDE + 3.5","3.5","A"],["Tasman","Internet Explorer 4.5","Mac OS 8-9","-"," +X"],["Tasman","Internet Explorer 5.1","Mac OS 7.6-9","1","C"],["Tasma +n","Internet Explorer 5.2","Mac OS 8-X","1","C"],["Misc","NetFront 3. +1","Embedded devices","-","C"],["Misc","NetFront 3.4","Embedded devic +es","-","A"],["Misc","Dillo 0.8","Embedded devices","-","X"],["Misc", +"Links","Text only","-","X"],["Misc","Lynx","Text only","-","X"],["Mi +sc","IE Mobile","Windows Mobile 6","-","C"],["Misc","PSP browser","PS +P","-","C"],["Other browsers","All others","-","-","U"]]}'; my $cgi = CGI->new; print $cgi->header( 'application/json' ); print $json;

However when i run the page server_side.html on local server. it returns error
The error message is :
Datatables varning (table id = 'example'): requested unknow parameter '1' from the data source for row 0

I wonder what is the problem? it seems above perl scirpt did not return a right jason response to datatables? Any ideas?

Thanks in advance.

Replies are listed 'Best First'.
Re: Right format of json response from Perl to datatables???
by Khen1950fx (Canon) on Nov 13, 2011 at 12:58 UTC
    Maybe this will help.
    #!/usr/bin/perl use strict; use JSON::XS; use CGI qw(:standard); use Data::Dumper::Concise; $| = 1; my $pstr = '{"sEcho":0,"iTotalRecords":"57","iTotalDisplayRecords":"57","aaData": +[["Trident","Internet Explorer 4.0","Win 95+","4","X"],["Trident","In +ternet Explorer 5.0","Win 95+","5","C"],["Trident","Internet Explorer + 5.5","Win 95+","5.5","A"],["Trident","Internet Explorer 6","Win 98+" +,"6","A"],["Trident","Internet Explorer 7","Win XP SP2+","7","A"],["T +rident","AOL browser (AOL desktop)","Win XP","6","A"],["Gecko","Firef +ox 1.0","Win 98+ \/ OSX.2+","1.7","A"],["Gecko","Firefox 1.5","Win 98 ++ \/ OSX.2+","1.8","A"],["Gecko","Firefox 2.0","Win 98+ \/ OSX.2+","1 +.8","A"],["Gecko","Firefox 3.0","Win 2k+ \/ OSX.3+","1.9","A"],["Geck +o","Camino 1.0","OSX.2+","1.8","A"],["Gecko","Camino 1.5","OSX.3+","1 +.8","A"],["Gecko","Netscape 7.2","Win 95+ \/ Mac OS 8.6-9.2","1.7","A +"],["Gecko","Netscape Browser 8","Win 98SE+","1.7","A"],["Gecko","Net +scape Navigator 9","Win 98+ \/ OSX.2+","1.8","A"],["Gecko","Mozilla 1 +.0","Win 95+ \/ OSX.1+","1","A"],["Gecko","Mozilla 1.1","Win 95+ \/ O +SX.1+","1.1","A"],["Gecko","Mozilla 1.2","Win 95+ \/ OSX.1+","1.2","A +"],["Gecko","Mozilla 1.3","Win 95+ \/ OSX.1+","1.3","A"],["Gecko","Mo +zilla 1.4","Win 95+ \/ OSX.1+","1.4","A"],["Gecko","Mozilla 1.5","Win + 95+ \/ OSX.1+","1.5","A"],["Gecko","Mozilla 1.6","Win 95+ \/ OSX.1+" +,"1.6","A"],["Gecko","Mozilla 1.7","Win 98+ \/ OSX.1+","1.7","A"],["G +ecko","Mozilla 1.8","Win 98+ \/ OSX.1+","1.8","A"],["Gecko","Seamonke +y 1.1","Win 98+ \/ OSX.2+","1.8","A"],["Gecko","Epiphany 2.20","Gnome +","1.8","A"],["Webkit","Safari 1.2","OSX.3","125.5","A"],["Webkit","S +afari 1.3","OSX.3","312.8","A"],["Webkit","Safari 2.0","OSX.4+","419. +3","A"],["Webkit","Safari 3.0","OSX.4+","522.1","A"],["Webkit","OmniW +eb 5.5","OSX.4+","420","A"],["Webkit","iPod Touch \/ iPhone","iPod"," +420.1","A"],["Webkit","S60","S60","413","A"],["Presto","Opera 7.0","W +in 95+ \/ OSX.1+","-","A"],["Presto","Opera 7.5","Win 95+ \/ OSX.2+", +"-","A"],["Presto","Opera 8.0","Win 95+ \/ OSX.2+","-","A"],["Presto" +,"Opera 8.5","Win 95+ \/ OSX.2+","-","A"],["Presto","Opera 9.0","Win +95+ \/ OSX.3+","-","A"],["Presto","Opera 9.2","Win 88+ \/ OSX.3+","-" +,"A"],["Presto","Opera 9.5","Win 88+ \/ OSX.3+","-","A"],["Presto","O +pera for Wii","Wii","-","A"],["Presto","Nokia N800","N800","-","A"],[ +"Presto","Nintendo DS browser","Nintendo DS","8.5","C\/A<sup>1<\/sup> +"],["KHTML","Konqureror 3.1","KDE 3.1","3.1","C"],["KHTML","Konqurero +r 3.3","KDE 3.3","3.3","A"],["KHTML","Konqureror 3.5","KDE 3.5","3.5" +,"A"],["Tasman","Internet Explorer 4.5","Mac OS 8-9","-","X"],["Tasma +n","Internet Explorer 5.1","Mac OS 7.6-9","1","C"],["Tasman","Interne +t Explorer 5.2","Mac OS 8-X","1","C"],["Misc","NetFront 3.1","Embedde +d devices","-","C"],["Misc","NetFront 3.4","Embedded devices","-","A" +],["Misc","Dillo 0.8","Embedded devices","-","X"],["Misc","Links","Te +xt only","-","X"],["Misc","Lynx","Text only","-","X"],["Misc","IE Mob +ile","Windows Mobile 6","-","C"],["Misc","PSP browser","PSP","-","C"] +,["Other browsers","All others","-","-","U"]]}'; my $json = JSON::XS->new->allow_nonref; my $enabled = $json->get_latin1; my $json_text = $json->encode($pstr); $pstr = $json->decode($json_text); my $pretty_print = $json->pretty->decode($pstr); my $q = CGI->new; print $q->header('application/json'); binmode STDOUT, ':encoding(utf8)'; print Dumper($pretty_print);
Re: Right format of json response from Perl to datatables???
by Anonymous Monk on Nov 13, 2011 at 00:55 UTC

    The error message is : ... I wonder what is the problem?

    The perl program you posted did not generate that error message