0

私は Highcharts を使用しており、JSON 形式でサーバーから plotBands の xAxis オプションを送信しています。プロットバンドにクリック メソッドを追加しようとしています。HTML ファイルにハードコードすると、すべて正常に動作しますが、動的に生成されたコードをサーバーから送信すると、プロットバンドが表示されますが、クリックは機能しません。JSON出力を取得してHTMLファイルに直接配置すると、そこで動作します

私のJSON出力:

[{"from":1349067600000,"to":1349758800000,"color":"rgba(68, 170, 213, .2)","events":{"click":"function(e) {alert(999);}"}},{"from":1350018000000,"to":1350622800000,"color":"rgba(68, 170, 213, .2)","events":{"click":"function(e) {alert(999);}"}}]

動作するコード:

            plotBands:[ {from:Date.UTC(2012,09,01),to:Date.UTC(2012,09,05),color:'rgba(68, 170, 213, .2)',events:{click:function(e) {alert(999);}}},
                        {from:Date.UTC(2012,09,07),to:Date.UTC(2012,09,12),color:'rgba(68, 170, 213, .2)',events:{click:function(e) {alert(999);}}}
                    ],

PHP から JSON を生成するコード:

$treatmentsList[$counter]=array('from'=>strtotime($PatPresVal->pres_med_start_date)*1000,'to'=>strtotime($PatPresVal->pres_med_end_date)*1000, 'color'=>'rgba(68, 170, 213, .2)','events'=>array('click'=>'function(e) {alert(999);}'));

それは小さなことだと確信していますが、何時間もそれを見つけることができません...事前に感謝します.

4

1 に答える 1

1

JSON は通常、関数を返すことをサポートしていません。特に、行ったように関数を文字列として返すことはできません。

"events":{"click":"function(e) {alert(999);}"}}

を使用して強制することもできますが、evalこれはお勧めしません。

JSON 応答を受け取った後、plotBands オブジェクトをループしてイベント ハンドラーを追加することをお勧めします。

for (var i = 0; i < plotBands.length; i++)
{
    plotBands[i]['events'] = {};
    plotBands[i]['events']['click'] = function(e) {alert(999);}
}
于 2013-06-29T15:43:29.030 に答える