簡體   English   中英

jQuery POST未填充數組

[英]Jquery POST not populating array

我正在嘗試使用參考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,

});

將邏輯移到那里,如果不能,則將邏輯放在函數中,然后在完成的回調中調用該函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM