2010-10-13 49 views
0

我使用這個PHP/CodeIgniter的庫jQuery的Highcharts:http://www.crustiz.com/php-jquery/highcharts-library-for-codeigniter/傳遞一個PHP字符串(代表一個JS功能)通過json_encode()

該庫做事情的方式是,它建立的一個PHP數組選項,然後使用json_encode將其轉換爲json(請參閱該庫的第273行),然後由jQuery Highcharts插件使用該選項。這很好,除了我試圖使用的選項是工具提示格式化程序,它需要是一個JavaScript函數,而不是一個字符串(請參閱http://www.highcharts.com/ref/#tooltip)。

由於庫不具有提示功能,我創建了一個作爲測試:

function set_tooltip() { 
    $this->a_options['tooltip']['formatter'] = 'function() { return this.series.name + "<br>" + this.x + ": " + this.y }'; 
    return $this; 
    } 

但是,這並不工作,因爲JS的功能是作爲一個字符串,而不是一個函數輸出。任何人都知道在通過json_encode之後是否有辦法讓它成爲函數,而不會重寫庫的那部分?

+1

無論你在做什麼,通過ajax發送javascript可能不是最有效的方法。 – Incognito 2010-10-13 14:46:07

+0

我沒有通過Ajax發送JS。 – 2010-10-13 15:18:17

回答

2

JSON並不意味着傳達功能。如果您查看documentation,則只有四種類型的規格 - 對象,數組,字符串和數字 - 加上值true,falsenull

如果你堅持這樣做,也許像Sending Javascript Functions Over JSON這樣的文章會幫助你。

1

JSON沒有「函數回調」類型,所以我認爲這是不可能的。它知道only the basic typesstring/number/object/array

相關問題