0

PHPを使用してJSスクリプトをHTMLソースドキュメントに書き込もうとしています。私は他の多くのフォーラムを調査しましたが、それでもエラーを完全に特定することはできません。

私が埋め込もうとしているJSスクリプトは、デフォルトのYUIChartingLibraryスクリプトの構文に従います。

私のphp文字列出力(エコーから生成:$ data-> dump_yui($ row_numbers = false、$ col_letters = false、$ sheet = 0、$ table_class ='excel');)がパラメータr'qdに適切に適合していると仮定します。 YUIスクリプト構文、HTMLドキュメントにスクリプトを埋め込むのはどこで間違っていますか?

HTMLでJavaScriptに記述されたPHP:

<?php 
echo "<script language=javascript>";
echo 'document.write("YUI().use('charts',function(Y){var myDataValues = [';
echo $data->dump_yui($row_numbers=false, $col_letters=false, $sheet=0, $table_class='excel');
echo "<br>];<br><br>var styleDef = {series:<br>{Stock:{line:{color:'#898DD5'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#222',alpha:0,wmode:'transparent'},over:{fill:{color:'#eee'},border:{color:'#000'},width:9,height:9}}},<br>Liability:{line:{color:'#171944'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#222',alpha:0,wmode:'transparent'},over:{fill:{color:'#eee'},border:{color:'#000'},width:9,height:9}}},<br>Shipment:{line:{color:'#ff0000',alpha:0,wmode:'transparent'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#ff0000',alpha:0,wmode:'transparent'},over:{fill:{color:'#ff0000',alpha:0,wmode:'transparent'},border:{color:'#000',alpha:0,wmode:'transparent'},width:16,height:16}}},<br>Production:{line:{color:'#FFD700',alpha:0,wmode:'transparent'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#FFD700',alpha:0,wmode:'transparent'},over:{fill:{color:'#FFD700',alpha:0,wmode:'transparent'},border:{color:'#000',alpha:0,wmode:'transparent'},width:16,height:16}}},<br>Order:{line:{color:'#006400',alpha:0,wmode:'transparent'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#006400',alpha:0,wmode:'transparent'},over:{fill:{color:'#006400',alpha:0,wmode:'transparent'},border:{color:'#000',alpha:0,wmode:'transparent'},width:16,height:16}}}}};<br>var myAxes={dateRange:{keys:['date'],position:'bottom',type:'category',title:'Date Range',styles:{majorTicks:{display:'none'},label:{rotation:-45,margin:{top:5}},title:{fontSize:'90%'}}}};var mychart=new Y.Chart({dataProvider:myDataValues,interactionType:'planar',render:'#mychart',categoryKey:'Date',styles:styleDef,categoryType:'time',horizontalGridlines:{styles:{line:{color:'#fff'}}},verticalGridlines:{styles:{line:{color:'#fff'}}}});<br>});";
echo '");';
echo "</script>";
?>

(「document.write」を含めずにスクリプトを実行してみました)

私はPHPに対してかなり環境に配慮しています。何かアイデアはありますか?

_ __更新(7月18、12):フィードバックをありがとう-私はすべての修正を試しましたが、コードでチャートがまだレンダリングされていません:

<?php 
echo "<script type='text/javascript'>";
echo 'document.write("YUI().use(\'charts\',function(Y){var myDataValues = [';
echo $data->dump_yui($row_numbers=false, $col_letters=false, $sheet=0, $table_class='excel');
echo "\n];\n\nvar styleDef = {series:\n{Stock:{line:{color:'#898DD5'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#222',alpha:0,wmode:'transparent'},over:{fill:{color:'#eee'},border:{color:'#000'},width:9,height:9}}},<br>Liability:{line:{color:'#171944'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#222',alpha:0,wmode:'transparent'},over:{fill:{color:'#eee'},border:{color:'#000'},width:9,height:9}}},<br>Shipment:{line:{color:'#ff0000',alpha:0,wmode:'transparent'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#ff0000',alpha:0,wmode:'transparent'},over:{fill:{color:'#ff0000',alpha:0,wmode:'transparent'},border:{color:'#000',alpha:0,wmode:'transparent'},width:16,height:16}}},<br>Production:{line:{color:'#FFD700',alpha:0,wmode:'transparent'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#FFD700',alpha:0,wmode:'transparent'},over:{fill:{color:'#FFD700',alpha:0,wmode:'transparent'},border:{color:'#000',alpha:0,wmode:'transparent'},width:16,height:16}}},<br>Order:{line:{color:'#006400',alpha:0,wmode:'transparent'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#006400',alpha:0,wmode:'transparent'},over:{fill:{color:'#006400',alpha:0,wmode:'transparent'},border:{color:'#000',alpha:0,wmode:'transparent'},width:16,height:16}}}}};<br>var myAxes={dateRange:{keys:['date'],position:'bottom',type:'category',title:'Date Range',styles:{majorTicks:{display:'none'},label:{rotation:-45,margin:{top:5}},title:{fontSize:'90%'}}}};var mychart=new Y.Chart({dataProvider:myDataValues,interactionType:'planar',render:'#mychart',categoryKey:'Date',styles:styleDef,categoryType:'time',horizontalGridlines:{styles:{line:{color:'#fff'}}},verticalGridlines:{styles:{line:{color:'#fff'}}}});<br>});";
echo '");';
echo "</script>";
?>

** _ 更新(7月20、12):

皆さんの追加のフィードバックに感謝します。3つのコードスニペットを含むページをサーバーにプッシュしました(ある程度整理された方法で)。



...まだこのバグを潰すことができません!

4

3 に答える 3

0

ここ:

echo 'document.write("YUI().use('charts',function(Y){var myDataValues = [';

これは、「チャート」のアポストロフィの問題です。たとえば、次のようになります。

echo 'document.write("YUI().use("charts",function(Y){var myDataValues = [';
于 2012-07-18T07:11:50.137 に答える
0

他の人が言及したこととは別に、<br>JavaScript コード内に大量の要素が含まれていますが、これは有効ではありません。それらを取り除く必要があります。

于 2012-07-18T07:13:47.673 に答える
0

一重引用符でエスケープすることを忘れないでください。

echo 'document.write("YUI().use(\'charts\',function(Y){var myDataValues = [';

<br />で置き換え\nます。

echo "\n];\n\nvar styleDef = {series:\n{Stock:{line:{color:'#898DD5'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#222',alpha:0,wmode:'transparent'},over:{fill:{color:'#eee'},border:{color:'#000'},width:9,height:9}}},<br>Liability:{line:{color:'#171944'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#222',alpha:0,wmode:'transparent'},over:{fill:{color:'#eee'},border:{color:'#000'},width:9,height:9}}},<br>Shipment:{line:{color:'#ff0000',alpha:0,wmode:'transparent'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#ff0000',alpha:0,wmode:'transparent'},over:{fill:{color:'#ff0000',alpha:0,wmode:'transparent'},border:{color:'#000',alpha:0,wmode:'transparent'},width:16,height:16}}},<br>Production:{line:{color:'#FFD700',alpha:0,wmode:'transparent'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#FFD700',alpha:0,wmode:'transparent'},over:{fill:{color:'#FFD700',alpha:0,wmode:'transparent'},border:{color:'#000',alpha:0,wmode:'transparent'},width:16,height:16}}},<br>Order:{line:{color:'#006400',alpha:0,wmode:'transparent'},marker:{fill:{color:'#eee',alpha:0,wmode:'transparent'},border:{color:'#006400',alpha:0,wmode:'transparent'},over:{fill:{color:'#006400',alpha:0,wmode:'transparent'},border:{color:'#000',alpha:0,wmode:'transparent'},width:16,height:16}}}}};<br>var myAxes={dateRange:{keys:['date'],position:'bottom',type:'category',title:'Date Range',styles:{majorTicks:{display:'none'},label:{rotation:-45,margin:{top:5}},title:{fontSize:'90%'}}}};var mychart=new Y.Chart({dataProvider:myDataValues,interactionType:'planar',render:'#mychart',categoryKey:'Date',styles:styleDef,categoryType:'time',horizontalGridlines:{styles:{line:{color:'#fff'}}},verticalGridlines:{styles:{line:{color:'#fff'}}}});<br>});";
于 2012-07-18T07:14:16.307 に答える