2013-02-28 69 views
0

我提交與AJAX的格式,並與所述響應數據打開彩盒:如何確保動態生成的div在js函數被調用之前被加載到DOM中?

$("#submitB").click(function() { 
    $.post("/previewproposal", $("#proposal-form").serialize(), function(data){$.colorbox({html:data});}, "html"); 
}); 

呈現的HTML是這樣的:

<script type="text/javascript"> 
    $(document).ready(function(){ 

     function plotData() 
     { 
      var dataArray = ...; 
      var options = ...; 

      $.plot($("#placeholder"), dataArray, options); 
     } 

     plotData(); 
    }); 
</script> 

<div id="placeholder" style="float:left;margin:0;font-size:8pt;width:540px;height:180px;"></div> 

其中動態生成的div是一個Flot繪圖佔位符。我目前收到以下錯誤:

uncaught exception: Invalid dimensions for plot, width = null, height = null 

Flot繪圖函數需要繪圖佔位符div的寬度和高度來工作。所以我在考慮plot函數被綁定/調用時,我的plot佔位符div沒有加載到DOM中?經過大量的搜索和查找與此類似的問題後,我找不到如何完成這項工作的例子。我如何在這裏排除故障?提前致謝。

+0

不能只需調用'plotData()'在你的['$ .post'(http://api.jquery.com/jQuery.post/)成功處理程序?或者我錯過了什麼? – jrummell 2013-02-28 17:44:21

回答

0

你需要使你的ajax同步,但它不可能與包裝$ .post()。因此,將其更改爲:

$.ajax({ 
    type: "POST", 
    async:false, 
    url: "/previewproposal", 
    data: $("#proposal-form").serialize(), 
    success: function(data){ 
     $.colorbox({html:data}); 
    }, 
    dataType: 'html' 
}); 

//you can call plotData() here... 
+0

你可以用'$ .post'來做到這一點,有一個成功的回調。 – jrummell 2013-02-28 17:42:45

+0

這不是關於回調,而是關於異步:true – 2013-02-28 17:44:40

+0

'$ .post'是異步....除非你的意思是設置async爲false。 – jrummell 2013-02-28 17:45:15

相關問題