アップデート:報告されたバグ、評価された投票https://tracker.adobe.com/#/view/CF-4200017cfchartがjsを応答コンテンツに強制しないようにする方法はありますか?
ColdFusion 10から2016に移行しています。チャートシステムの変更だけがハードウェアとの互換性があるようです。フルページリクエストの場合、これは一般的には問題ありませんが、いくつかの箇所では、png形式のグラフを生成し、生成されたコンテンツをキャプチャし、同時に生成されたjを取り除き、ページ更新の一部としてjsonで結果を返します。私たちが取り組んでいる問題は、CFが出力されている実際のコンテンツとは別のリクエストレスポンスでjavascriptを強制して、jsonレスポンスを無効にすることです。
jsがcfhtmlheadタグのようなアプローチを使用して挿入されているようですが、headタグのレスポンスを見て、そこにコードを挿入します。そうでなければ、要求全体にコードが追加されます。 jsonにすべき応答については、これは明らかに問題です。
グラフが生成される前にフラッシュを呼び出してみましたが、「ColdFusionで指定したテキストを出力ストリームに追加できませんでした。これは、既にCFFLUSHタグをテンプレートに使用しているか、 cfchartコードがヒットしたときにバッファリングされた出力がオフになります。
CFにコードをインラインで入力する方法や、要求出力に挿入する予定のコンテンツをリセットする方法についてのご意見はありますか?
例:
<cfsavecontent variable="ignore">
<cfchart format="png">
<cfchartseries type="Bar" label="Numbers">
<cfchartdata item="First" value="1">
<cfchartdata item="Second" value="2">
</cfchartseries>
</cfchart>
</cfsavecontent>
<cfcontent reset="true" />
test
結果:
<script type="text/javascript">/* <![CDATA[ */_cf_loadingtexthtml="<img alt=' ' src='/cf_scripts/scripts/ajax/resources/cf/images/loading.gif'/>";
_cf_contextpath="";
_cf_ajaxscriptsrc="/cf_scripts/scripts/ajax";
_cf_jsonprefix='//';
_cf_websocket_port=8579;
_cf_flash_policy_port=1243;
_cf_clientid='1D0DA2C606EC323ABBECA5B29A016CF0';/* ]]> */</script><script type="text/javascript" src="/cf_scripts/scripts/ajax/messages/cfmessage.js"></script>
<script type="text/javascript" src="/cf_scripts/scripts/ajax/package/cfajax.js"></script>
<script type="text/javascript" src="/cf_scripts/scripts/chart/cfchart-server.js"></script>
test
それは単なるテストにcfdocumentのファイル名= "test.pdfという" とcfsavecontentタグを置き換える(cfdocumentのタグで使用されるグラフのにも問題があります)。チャートはディスク上のドキュメントに追加されますが、jsはリクエストレスポンスで出力され、ダウンロードリンクやその他のデータを返すためのAjaxリクエストは強制終了されます。
「設計どおりに動作しています」ということは間違いありません。組み込みの_cfblah_ものから離れていく理由の1つ。 [ColdFusion UIの正しい方法](https://github.com/cfjedimaster/ColdFusion-UI-the-Right-Way) –
良い点。私たちはCFのほぼすべてのUI関連機能を避けました。グラフは私たちが実際に使用したものです。長年にわたり代替品を探していたが、まだ切り替え時に引き金を引いてはいない。 –
また、チャートからのコンテンツが要求に出力されないような状況では、ヘッド領域にはまだjavascriptの出力があるという単純な事実のために設計されているとは言いません。たとえば、cfchartを名前で呼び出して、その名前を使用してチャートイメージファイルを保存することができます。チャートは要求に返されることは決してありませんが、javascriptコードはまだプリペンドされています。 –