2013-08-07 22 views
1

在ajax中,我獲取values變量的值,但這些值沒有進入items變量。這是什麼原因?如何使用代碼中的js中的函數參數獲取值

我在做什麼錯?在onload函數內,values變量被警告爲未定義。有人能幫助我嗎?謝謝。

的代碼我使用如下:

<script type="text/javascript" language="javascript"> 
     var values; 
    $.ajax({ 
       cache : false, 
       type: "GET", 
       url: 'chartvalues', 
       format:'json', 
       success: function(response) 
       { 
        //alert(response); 
        values = response; 
        //alert (values); 
       } 
      }); 


    window.onload = function() { 
      onLoadDoc(); 
    } 

    var chart1; 


    function onLoadDoc() { 
      chart1 = new cfx.Chart();chart1.getAnimations().getLoad().setEnabled(true); 


      var axisY = chart1.getAxisY(); 
      axisY.setMin(0); 
      axisY.setMax(30); 

      //----Assign data fields-------- 

      var fields = chart1.getDataSourceSettings().getFields(); 
      var field1 = new cfx.FieldMap(); 
      field1.setName("Value"); 
      field1.setUsage(cfx.FieldUsage.Value); 
      fields.add(field1); 
      var field2 = new cfx.FieldMap(); 
      field2.setName("Date"); 
      field2.setUsage(cfx.FieldUsage.XValue); 
      fields.add(field2); 

      chart1.setGallery(cfx.Gallery.Bar); 

      //----Set Sample Data------------ 
      alert (values); 
      var items = values; 
      //alert (items); 

      chart1.setDataSource(items); 
      chart1.getView3D().setEnabled(true); 



      var chartDiv = document.getElementById('ChartDiv1'); 
      chart1.create(chartDiv); 
    } 



    </script> 

回答

1

存在的實現問題。看看這個例子。

<script type="text/javascript" language="javascript"> 

    // Step 1 
    // On window load get data using ajax 
    window.onload = function() { 
    getAjaxData(); 
    } 

    // Step 2 
    // After getting data, call the chart function and pass data 
    function getAjaxData() { 
    var values; 
    $.ajax({ 
     cache : false, 
     type : "GET", 
     url : 'chartvalues', 
     format:'json', 
     success: function(values) { 
     onLoadDoc(values); 
     } 
    }); 
    } 

    // Step 3 
    // Process your chart using the passed data 
    function onLoadDoc(values) { 
    var chart1; 
    chart1 = new cfx.Chart();chart1.getAnimations().getLoad().setEnabled(true); 
    var axisY = chart1.getAxisY(); 
    axisY.setMin(0); 
    axisY.setMax(30); 

    //----Assign data fields-------- 
    var fields = chart1.getDataSourceSettings().getFields(); 
    var field1 = new cfx.FieldMap(); 
    field1.setName("Value"); 
    field1.setUsage(cfx.FieldUsage.Value); 
    fields.add(field1); 
    var field2 = new cfx.FieldMap(); 
    field2.setName("Date"); 
    field2.setUsage(cfx.FieldUsage.XValue); 
    fields.add(field2); 

    chart1.setGallery(cfx.Gallery.Bar); 

    //----Set Sample Data------------ 
    var items = values; 
    chart1.setDataSource(items); 
    chart1.getView3D().setEnabled(true); 

    var chartDiv = document.getElementById('ChartDiv1'); 
    chart1.create(chartDiv); 
    } 

</script> 
+0

值獲得修正,但圖表不起作用。 – user2412936

+0

@ user2412936這是另一個問題。 –

0

只是給你一個補丁參考。在頁面的任何地方創建一個隱藏字段:

<input type="hidden" id="hidden_values"> 

現在,當阿賈克斯成功選項:

success: function(response) 
{ 
    //alert(response); 
    values = response; 
    //alert (values); 
    $("#hidden_values").val(values); //to save the values in a hidden field in the page to retrieve later 
} 

裏面的onLoadDoc功能:

alert ($("#hidden_values").val();); 
var items = $("#hidden_values").val(); 
+0

同樣的輸出得到的是未定義的警報 – user2412936

相關問題