2014-12-18 5 views
-1

그림과 같이 JSON에 인쇄하는 perl cgi 스크립트가 있습니다.HTML로 디버깅 JSON

두 부분으로 구성됩니다. part-1은 html의 텍스트 박스/드롭 다운 박스를 검색 버튼이있는 사용자에게 보여줍니다.

사용자가 입력을 클릭하고 검색을 클릭하면 javascript 함수 do_search가 실행되어 동일한 cgi 스크립트를 호출하고 params를 사용하여 값을 보냅니다.

스크립트의 part-2는이 값을 받아들이고 데이터베이스를 쿼리하고 결과를 가져 와서 json으로 인쇄합니다.

제 질문은이 스크립트를 디버그하는 방법입니다. 예를 들어. SQL을 인쇄하고보고 싶습니다. 내가 어떻게 그럴 수 있니?

print to_json({value => $html, sql => $sql}, {ascii => 1}); 

이 그냥 그렇게 해시에 다른 키/값을 추가합니다 : 당신이 마크 B의 코멘트 당 JSON에서 SQL을 반환하려면

CGI Script: 

#!/usr/bin/perl -wT 

use DBI; 
use strict; 
use CGI qw(param); 
use Data::Dumper; 
use JSON; 

use lib "/home/thames/lib"; 
use Kearynet; 

my $method = param('method'); 

if($method){ 

     my $html; 

     my $id = param('id'); 
     my $inspector = param('inspector'); 
     my $postcode = param('postcode'); 
     my $pjk_status = param('status'); 
     my $pjk_validated = param('pjkvalidated'); 
     my $pjk_type = param('pjktype'); 

     my @query; 
     my @query_values; 

     if($id){ 
       #$html .= "Id is <b>" . $id . "</b><br>"; 
       push(@query, "`inspection_id` = ?"); 
       push(@query_values, $id); 
     } 

     if($inspector){ 
       #$html .= "Inspector is <b>" . $inspector. "</b><br>"; 
       push(@query, "`inspector` LIKE ?"); 
       push(@query_values, '%' . $inspector. '%'); 
     } 

     if($postcode){ 
       #$html .= "Postcode is <b>" . $postcode. "</b><br>"; 
       push(@query, "`postcode` LIKE ?"); 
       push(@query_values, '%' . $postcode. '%'); 
     } 

     if($pjk_status){ 
       push(@query, "`status` = ?"); 
       push(@query_values, $pjk_status); 
     } 

     if($pjk_validated){ 
       push(@query, "`PJK_Validated` = ?"); 
       push(@query_values, $pjk_validated); 
     } 

     if($pjk_type){ 
       push(@query, "`PJK_Type` = ?"); 
       push(@query_values, $pjk_type); 
     } 
       push(@query, "`date` > ?"); 
       push(@query_values, "20140831"); 


     my $dbh = DBI->connect("DBI:mysql:database=tw;host=db.net", "xyz", "xyz"); 
     my $sql = "SELECT * FROM tw_general.insp_gang "; 

     if(@query){ 
       $sql .= "WHERE " . join(' AND ', @query); 
     } 

     $sql .= " ORDER BY date"; 
     #$html .= "Sql is <b>" . $sql. "</b> <br>"; 
     my $query = $dbh->prepare($sql); 
     warn $sql; 

     if($query->execute(@query_values)){ 
       if($query->rows > 0){ 
         $html .= "There are <b>" . $query->rows . "</b> records matching.<br><br>"; 
         $html .= "<table cellpadding='4' width='960' cellspacing='0' style='border:1px solid #CCCCCC'>"; 
         $html .= "<tr>"; 
         $html .= "<td><b>Inspection ID</b></td>"; 
         $html .= "<td><b>Inspector </b></td>"; 
         $html .= "<td><b>Street </b></td>"; 
         $html .= "<td><b>Town </b></td>"; 
         $html .= "<td><b>Postcode </b></td>"; 
         $html .= "<td><b>Status </b></td>"; 
         $html .= "<td><b>PJK_Type</b></td>"; 
         $html .= "<td><b>PJK_Validated</b></td>"; 
         $html .= "<td><b>Date</b></td>"; 
         $html .= "</tr>"; 
         while(my $row = $query->fetchrow_hashref){ 
           $html .= "<tr>"; 
           $html .= "<td style='border-bottom:1px solid #CCCCCC'><b><a href='SelectGangInsp.cgi?param1=$row->{inspection_id}' target='_blank'>$row->{inspection_id}</a></b></td>"; 
           $html .= "<td style='border-bottom:1px solid #CCCCCC' nowrap><b>$row->{inspector}</b></td>"; 
           $html .= "<td style='border-bottom:1px solid #CCCCCC' nowrap><b>$row->{street}</b></td>"; 
           $html .= "<td style='border-bottom:1px solid #CCCCCC' nowrap><b>$row->{town}</b></td>"; 
           $html .= "<td style='border-bottom:1px solid #CCCCCC' nowrap><b>$row->{postcode}</b></td>"; 
           $html .= "<td style='border-bottom:1px solid #CCCCCC' nowrap><b>$row->{status}</b></td>"; 
           $html .= "<td style='border-bottom:1px solid #CCCCCC' nowrap><b>$row->{PJK_type}</b></td>"; 
           $html .= "<td style='border-bottom:1px solid #CCCCCC' nowrap><b>$row->{PJK_Validated}</b></td>"; 
           $html .= "<td style='border-bottom:1px solid #CCCCCC' nowrap><b>$row->{date}</b></td>"; 
           $html .= "</tr>"; 
         } 
         $html .= "</table>"; 
       }else{ 
         $html .= "<b>Sorry - No Results were returned...</b>"; 
       } 
     } 
     print "Content-Type: application/json\n\n"; 
     #$html .= "There are <b>" . $id. "</b> records matching.<br><br>"; 
     print to_json({value =>  $html}, {ascii => 1}); 


exit 0; 
} 

print "Content-type: text/html\n\n"; 
#print "<html><head><title>Hello World</title></head>\n"; 
#print "<body>\n"; 
#print "<h2>Hello, world!</h2>\n"; 
#print "</body></html>\n"; 
print <<HTML_BLOCK; 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Kearynet - Show Gang Inspection Information 2014</title> 
<link href="style.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="jquery-1.4.2.min.js"></script> 
<script type="text/javascript" src="db_search.js"></script> 
</head> 
<body> 
<h1 style='color:#999999'>Show Gang Inspection Information (2014)</h1> 
<br><br> 
<table width="760" border="0" cellspacing="0" cellpadding="4"> 
    <tr> 
    <td><strong>Inspection Id</strong></td> 
    <td><strong>Inspector</strong></td> 
    <td><strong>Postcode</strong></td> 
    <td><strong>Status</strong></td> 
    <td><strong>PJK<br>Type</strong></td> 
    <td><strong>PJK<br>Validated</strong></td> 
    <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td><input name="inspid" type="text" id="inspid" /></td> 
    <td><input name="inspector" type="text" id="inspector" /></td> 
    <td><input name="postcode" type="text" id="postcode" /></td> 
    <td><select name="status" id="status"> 
       <option></option> 
       <option>Holding</option> 
       <option>Completed</option> 
       <option>TEST</option> 
     </select></td> 
    <td><select name="pjktype" id="pjktype"> 
       <option></option> 
       <option>Gang on site</option> 
       <option>Unattended SLG</option> 
       <option>Post works</option> 
       <option>Pre-works</option> 
     </select></td> 
    <td> 
     <select name="pjkvalidated" id="pjkvalidated"> 
       <option></option> 
       <option>Yes</option> 
       <option>No</option> 
       <option>Null</option> 
     </select> 
     </td> 
    <td><input type="button" value="Search" onclick="DoSearch()"/></td> 
    </tr> 
</table> 
<br><hr color='#CCCCCC'><br> 
<div name='search' id='search'></div> 
    HTML_BLOCK 

Java script: 
function DoSearch(){ 

     var ID = $("#inspid").val(); 
     var Inspector = $("#inspector").val(); 
     var Postcode = $("#postcode").val(); 
     var Status = $("#status").val(); 
     var PjkValidated = $("#pjkvalidated").val(); 
     var PjkType = $("#pjktype").val(); 

     $("#search").html("<div style='padding:10px'><img src='img/loading.gif'></div>"); 

     $.post('DoGangInsp.cgi', {method: "search", id: ID, inspector: Inspector, postcode: Postcode, status: Status, pjkvalidated: PjkValidated, pjktype: PjkType}, 

       function(data){ 

         $("#search").html(data.value); 


       } 
     ); 

} 
+1

json을 반환합니다. 당신은 쉽게 어딘가에 json의 다른 매개 변수에 쿼리 문자열을 추가 할 수 있습니다. 파일로 덤프 할 수 있습니다. 너는 많은 선택권이있다. 하나 골라서 가라. –

+0

포인터를주세요. – Mahesh

+0

당신은 저에게 어떻게 도와 줄 수있는 링크를 알려주시겠습니까? 감사. – Mahesh

답변

0

는, 예를 들어, 수 있도록이 줄을 변경 SQL이 리턴됩니다. 이 작업을 수행하는 또 다른 방법은 스크립트에 로깅을 추가하는 것입니다 (예 : Log4perl). 검색 할 경우 다른 Perl 로깅 옵션이 있습니다.

+1

안녕하세요 Zerodiff, 당신이 언급 한 것처럼 인쇄 to_json에 SQL을 포함 시키려고했습니다. 그러나 운이 없다. 웹 페이지에서 쿼리를 찾을 수 없습니다. 내 자바 스크립트를 변경해야합니까? 제발 조언. 감사. – Mahesh

+0

HTML에 넣지 않는 한 HTML에 포함되지 않습니다 ... 다른 해결책은 주석에 HTML에 넣는 것입니다. . 브라우저에서 JavaScript 디버거를 열고 JSON 응답 내용을보아야합니다. 예 : 커맨드 라인에서'curl'을 호출하십시오. – zerodiff

관련 문제