Jquery POST未填充数组

Jquery POST not populating array

本文关键字:数组 填充 POST Jquery      更新时间:2023-09-26

我正在尝试用引用HighCharts的JSON条目填充数组。

其中一个JSON对象是手动填充的,另一个需要使用PHP帖子动态填充。我一直在尝试使用回调函数将数据推送到数组,但似乎没有数据被推送。

我能够验证从PHP Post返回的数据。它似乎确实填充了数组,但一旦Jquery POST函数完成,数组似乎就被清空了。

此外,我在POST中有一个console.table调用。这个实际上正确地打印了数组。

你可以从下面的代码中看到,我使用了console.table()调用紧接在帖子之后,它是空的。但是,在我接下来手动推送之后,数据数组中现在包含了用于手动推送JSON数组的数据。

有什么想法吗?

这是我的代码:

/* INITIAL ARRAY **************************************/
data_array = [];
var colors = Highcharts.getOptions().colors;
categories = ['Dynamic', 'Manual'];
/* FUNCTION TO PUSH TO ARRAY *****************************/
function push_toarray(cats,counts) {
    data_array.push({
        y: 10.38,
        color: colors[1],
        drilldown: {
            name: 'Dynamically Populated',
            categories: [cats],
            data: [counts],
            color: colors[1]
        }
    });       
}
/* PHP AND FOR LOOP FOR GETTING DATA *********************************************/

    $.post( "php/dt_charts.php")
        .done(function( data ) {
        var obj = jQuery.parseJSON(data);
        // To verify the values are returned
        console.log(obj.fe_det_name);  
        console.log(obj.fe_det_count);
        push_toarray(obj.fe_det_name, obj.fe_det_count);
        console.table(data_array);  // This prints the array correctly with both JSON objects inside
    });
    //console.table(data_array);  // This prints no data.
/* MANUAL DATA ARRAY *********************************************/

    data_array.push({
        y: 10.38,
        color: colors[1],
        drilldown: {
            name: 'Manually Populated',
            categories: ['Firefox v31', 'Firefox v32', 'Firefox v33', 'Firefox v35', 'Firefox v36', 'Firefox v37', 'Firefox v38'],
            data: [0.33, 0.15, 0.22, 1.27, 2.76, 2.32, 2.31, 1.02],
            color: colors[1]
        }
    })

console.table(data_array); // This prints only the manually populated array values
  $.post( "php/dt_charts.php")
     .done(function( data ) {
    var obj = jQuery.parseJSON(data);
    // To verify the values are returned
    console.log(obj.fe_det_name);  
    console.log(obj.fe_det_count);
    push_toarray(obj.fe_det_name, obj.fe_det_count);
    console.table(data_array);  // This prints the array correctly with both JSON objects inside
<----- move your logic here,
});

将你的逻辑移到那里,如果你不能把你的逻辑放在一个函数中,并在你完成的回调中调用该函数。