1

JSON 形式のデータを含むレポートを生成する必要があります。パラメータを受け取り、データを含む html テーブルまたは Excel を表示するアクション ファイルを次に示します。必要な形式 (html または Excel) に変換する JSON データの解析についてサポートが必要です。私は Excel の書式設定の操作方法を知っています。JSON データの解析と出力の助けが必要なだけです。

<cfajaxproxy cfc="components.acct.accttrx">
<script src="../jQuery/js/jquery-1.7.2.min.js"></script>

<cfparam name="prD" default="0_0">
<cfparam name="sM" default="1">
<cfparam name="sY" default="2013">
<cfparam name="status" default="0">
<cfparam name="FORM.fileformat" default="html">

<script type="text/javascript">
  jQuery(document).ready(function(){        
    var myURL = '../components/acct/accttrx.cfc';

  function populateReport(){            
  $.ajax({
  url: myURL + "?method=GetTranactions",
  type: 'POST',
  data: { 
    prID: '<cfoutput>#prD#</cfoutput>',
    mn: '<cfoutput>#sM#</cfoutput>',
    yr: '<cfoutput>#sY#</cfoutput>',
    st: '<cfoutput>#status#</cfoutput>',
    ea_adm:'1',
    slist:'',
    lang: '1'
  },
  dataType: "json",
  success: 
    function(data){
    $.each(data, function(index, item) {
      //(item.description,item.balance,item.accttrx_status);
      // I need help from this point to pass 
      // data to cfml part of my code
      });
    },
  error: 
    function(){
      alert("An error has occurred while fetching records");
    }
});
populateReport();
});
</script>
</HEAD>
<body>
<cfif FORM.fileformat Eq 'excel'>
    <cfset VARIABLES.vcFilename = "thisreport_" & DateFormat(Now(), "yyyymmdd") & "-" &  TimeFormat(Now(), "HHmmss") & ".xls">
    <cfsetting enablecfoutputonly="Yes">
    <cfcontent type="application/vnd.ms-excel">
    <cfheader name="Content-Disposition" value="inline;filename=""#VARIABLES.vcFilename#""">

     <cfoutput>
      <!--- here display data from JSON object --->
     </cfoutput>
  <cfsetting enablecfoutputonly="No">
  <cfelse>
    <div id="reportcontents" />  <!--- display row html --->
</cfif>

応答からのデータは次のとおりです。

{"ROWS":[ { "balance":-642.04000, "description":"ABC Company", "ee_name":"Jon, Doe", "plan_id":0, "debit":25000.22000, "accttrx_year":2013 , "sponsor_id":5, "division_id":0, "accttrx_month":1, "credit":26591.25000, "trx_employee_id":1, "cheque_amt":25000.00000, "cheque_no":"", "accttrx_status":"B ", "accttrx_id":15 }, { "balance":-642.04000, "description":"ABC Company", "ee_name":"James, Done", "plan_id":0, "debit":32233.07000, "accttrx_year ":2013"Sponsor_id":5, "division_id":0, "accttrx_month":1, "credit":30000.00000, "trx_employee_id":1, "cheque_amt":32233.07000, "cheque_no":"", "accttrx_status":"P", "accttrx_id":14 } ], "PAGE":1, "RECORDS":2, "TOTAL":1.0 }

4

2 に答える 2

1

ColdFusion 8 以降を使用している場合は、DeserializeJSON() を使用して JSON を構造体に変換できます。その後、cfloop を使用してこの構造体をループし、構造体のコンテンツをクエリに変換できます (ループ内で QueryNew()、QueryAddRow()、および QuerySetCell() を使用)。そこから、ColdFusion 9 を使用している場合は cfspreadsheet タグを使用してそのクエリを Excel ファイル (または csv ファイル) に変換するか、ColdFusion の任意のバージョンを使用してプレーンな古い HTML を出力し、ヘッダーを設定してブラウザをだますことができます。次のように、Excel ファイルであると考えます。

<cfcontent type="application/msexcel">
于 2013-01-29T19:01:18.850 に答える
0
  1. AJAXを使用しないでください。JS関数を作成するだけで、レポートパラメータを処理コードにプッシュできます。例については、この投稿を参照してください。基本的に:

     window.location="process.cfm?param1=&param2=";
    
  2. '../components/acct/accttrx.cfc'ファイルでdeserializeJSON()を使用して、投稿されたJSONをCF構造に解析します。

  3. 次のCFを使用して、ブラウザにファイルのダウンロードを認識させます。

     <cfheader name="Content-Disposition" value="attachment;filename=XXXX">
     <cfcontent type="application/vnd.ms-excel" reset="false">
    
于 2013-01-30T00:52:02.370 に答える