0

正如我在标题中提到的,我想将一个 Javascript 变量传递给 JQuery。我花了一整天的时间寻找方法,但一无所获。我尝试使用 ajax 将变量传递给 PHP,然后我可以获得响应数据。但是当我想将它传递给highcharts时,它不起作用,谁能告诉我如何做到这一点?我将不胜感激。

//this is the ajax I used to send the request to PHP , I can get the data in data_ajax.
function chooseCategory(mat_id){
            var ajax = ajaxObj("POST", "test.php");
        ajax.onreadystatechange = function() {
        if(ajaxReturn(ajax) == true) {
             data_ajax = ajax.responseText;
             alert(data_ajax);}
                }

                ajax.send("id=" + material_id);
        }

    //this is part of the jquery code, the charts can not get any data from variable data_ajax.
     $(function () {                                            
$('#container3').highcharts({
    ...
    ...
     series: [{  type: 'line', name: '#numbers:', data: data_ajax
4

3 回答 3

1

由于 Ajax 调用是异步的,因此在加载 Highcharts 之前需要等待它完成。为此,您通常使用回调。将图表加载代码放入函数“loadCharts(data)”中,并从 Ajax 处理程序内部调用它。像这样的东西:

function chooseCategory(mat_id){
    // ...

    ajax.onreadystatechange = function() {
        if(ajaxReturn(ajax) == true) {
            data_ajax = ajax.responseText;
            alert(data_ajax);
            loadCharts(data_ajax);
        }
    };
}

function loadCharts(data_ajax)
    $('#container3').highcharts({ ... });
}
于 2013-09-10T21:10:11.583 回答
1

只需定义一个调用highcharts的函数。

var drawChart = function(data_ajax) {
   $('#container3').highcharts({
      ...
      ...
      series: [{  type: 'line', name: '#numbers:', data: data_ajax
   });
}

然后不是警告数据,而是简单地调用函数:

drawChart(data_ajax)
于 2013-09-10T21:11:06.603 回答
0

您需要阅读 Ajax 和 jQuery。

先试试这个

function chooseCategory(mat_id){
  $.post("test.php",{"id":mat_id},function(data) {
    window.console && console.log(data);
  });
}

然后当你开心的时候试试当然要加载的highcharts

function chooseCategory(mat_id){
  $.post("test.php",{"id":mat_id},function(data) {
    $('#container3').highcharts({
     series: [{  "type":"line", "name": "#numbers", "data": data }]
    });
  });
}
于 2013-09-10T21:11:43.747 回答