2016-11-30 46 views
1

我正在尝试生成我的项目报告。这些报告在饼图的帮助下显示。我收到了正确的数据,但第一个请求中饼图没有更新。我必须发送2-3个请求,然后更新饼图。 我的js代码是在这里:数据更改时饼图数据未更新

//Pie chart for product 
      var dataLeadproduct = google.visualization.arrayToDataTable(pieproductdataLeadSummery); 
      var productLeadoptions = { 
       title: 'Top Product', 
       pieHole: 0, 
       pieSliceText: '', 
       pieSliceBorderColor: '#00ffffff', 
       colors: ['#FF772D', '#57c8f2', '#8175c7', '#ff6c60', '#A9D86E'], 
       chartArea: {left: 20, top: 10, width: '100%', height: '75%'}, 
       is3D: false, 
       reverseCategories: false, 
       'tooltip.text': 'value' 
      }; 
      var productLeadSummery = new google.visualization.PieChart(document.getElementById('leadsummeryproduct_piechart')); 
      productLeadSummery.draw(dataLeadproduct, productLeadoptions); 

CI的控制器代码:

//Product Pie Chart 
       $leadProduct_query = 'SELECT COUNT(lead_product_id) AS lead_product_count, lead_product_id FROM leads WHERE lead_id IN (' . implode(',', $leadsID) . ') AND lead_location_id ="' . $leadsummery_city . '" AND lead_progress LIKE \'%:"' . $leadsummery_stages . '";%\' AND lead_loan_amount >="' . $leadsummery_amount_from . '" AND lead_loan_amount <="' . $leadsummery_amount_to . '" AND lead_reg_date <="' . $leadsummery_startdate . '" AND lead_reg_date >="' . $leadsummery_enddate . '" GROUP BY lead_product_id ORDER BY COUNT(lead_product_id) DESC limit 5'; 
       $leadProduct = $this->db->query($leadProduct_query)->result_array(); 
       $leadProduct_count = count($leadProduct); 

       foreach ($leadProduct as $lp) { 
        $product_name[] = $this->Generalmodel->getfromid('products', 'product_name', $lp['lead_product_id']); 
        $pro_percent[] = round(($lp['lead_product_count']/$leads_count) * 100); 
       } 

       $tempLeadPro[] = array('Product Name', 'Count'); 
       for ($i = 0; $i < $leadProduct_count; $i++) { 
        $proData = array($product_name[$i], $pro_percent[$i]); 
        $tempLeadPro[] = $proData; 
        $leadSummeryProductpiedata = $tempLeadPro; 
       } 

回答

0

问题解决了。这是由于google.charts.setOnLoadCallback(drawLeadSummeryChart);引起的。 因为我在同一个jQuery中多次使用setOnLoadCallback。 由于这种情况,它总是在控制台"Uncaught Error: Container is not defined"中显示错误,并且无法加载响应。所以我只是检查从查看页面的ID长度大于0.如果它大于那么执行setOnLoadCallback。代码如下:

if ($('#IDFROMVIEWPAGE').length > 0) { 
       google.charts.setOnLoadCallback(drawLeadSummeryChart); 
      }