1

在 ajax 中,我正在获取values变量的值,但这些值没有进入 items 变量。这是什么原因?

我究竟做错了什么?在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>
4

2 回答 2

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>
于 2013-08-07T11:18:55.610 回答
0

只是给你一个补丁参考。在页面的任意位置创建一个隐藏字段:

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

现在,当在 ajax 的成功选项中时:

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();
于 2013-08-07T11:20:02.187 回答