3

PHP - これは、PHP 関数 (json_encoded) によって返される Highchart 構成配列の一部です。

'plotOptions' => array(
    'pie' => array(
        'allowPointSelect'  => TRUE,
        'cursor'            => 'pointer',
        'dataLabels'        => array(
            'enabled'           => TRUE,
            'color'             => '#000000',
            'connectorColor'    => '#000000',
            'formatter'         => "function() { return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %' }"
        )
    )
)

JavaScript - エンコードされたデータからこの情報にアクセスする

container.highcharts(r.hc);
// r.hc is the array that contains the highchart information above

私が抱えている問題は次のとおりです。

Uncaught TypeError: Object function() { return '<b>'+ this.point.name +'</b>: '+
this.percentage +' %' } has no method 'call'

これを関数として認識するように変更するにはどうすればよいですか? それともこれは可能ですか?

4

2 に答える 2

2

リモート ソースから JavaScript を実行することは、信頼できないため、悪い考えです。ただし、次のことが必要な場合:

json に含まれる関数は文字列であるため、評価する必要があります。

 pie.dataLabels.formatter = eval('('+pie.dataLabels.formatter+')');

変換する必要があるオブジェクトのメソッドごとに。

ただし、最初に述べたように、この方法で JavaScript をフェッチする必要がないソリューションはほぼ確実にあります。

于 2013-05-22T18:40:41.303 に答える
0

ハイチャート構成配列全体ではなく、パイハイチャートのシリーズデータのみを返すことにしました... plotOptions は javascript で定義され、json_encoded PHP 配列では返されません..

なぜ私がそうしていたのかよくわかりませんが、eval のすべての助けに感謝します!

于 2013-05-28T16:32:38.277 に答える