2011-09-08 131 views
2

我無法通過jquery ajax調用加載處理js腳本。草圖在自己的文件中運行良好,但是當我將它加載到一個div中時,它不起作用。我需要以某種方式初始化草圖嗎?我搜索了Processing js文檔,但無法找到它。由於通過jquery ajax加載處理js?

醜陋的測試腳本

<a href="#" onclick="$.ajax({url: '/test', context: document.body, success: function(text){ $('#container').html(text); }});">Test</a> 

在哪裏「/測試」將包含

<script type="application/processing" data-processing-target="pjs"> 
// code here 
</script> 
<canvas width="760" height="500" id="pjs"></canvas> 

回答

2

如果你取從文件的源,創建畫布一個新的處理情況下,你想要它加載到,而不是:

Processing.loadSketchFromSources($('#pjs'), ['mysketch.pde']); 

第二個參數是一個數組,因爲草圖可以由多個源文件。

如果它是動態的代碼,只需建立一個新的處理實例:

new Processing($('#pjs'), "/* full sketch code goes here. */"); 

您的帖子似乎表明相對於什麼Ajax調用「/測試」產生一些控制水平,所以我會它只是簡單地生成草圖代碼,沒有腳本和畫布標記,並且讓ajax回調函數在頁面上生成canvas元素,接着是一個新的Processing($('#canvasid'),callbackdata)調用,以便處理。 js將草圖代碼加載到您剛創建的畫布中。

+0

如果你在做rails js.erb,這裏有一些示例代碼: js ='<%= escape_javascript render:partial =>「auto」,:locals => {:data => @data}%>' ; new Processing('processing-canvas2',js); 注意 - 當我傳遞$('...')時它不起作用 - 只需傳遞元素的id字符串 - 不需要jquery位 –