簡體   English   中英

jQuery ajax發布成功 - 將數據保存到變量

[英]jQuery ajax post success - saving data to variable

我有這個功能:

function getReport(name,x) {
    var xArr = [];
    var yArr = [];
    $.ajax({
        async: false,
        type: "POST",
        //async: false,
        //dataType: "json",
        url: "reportAjax.php",
        data: "name="+ name,
        success: function(data){
            var json = $.parseJSON(data);
            var chartDesc = json.INFO.DESC;
            $.each(json.RESULT, function(i, object) {
                $.each(object, function(property, value) {
                    //alert(property + "=" + value);
                    if (property == x) {
                        xArr.push(value);
                    }
                    else {
                        yArr.push(parseInt(value));
                    }

                });
            });                
        }
    }); 
    console.log(xArr);
    console.log(yArr);
    console.log(chartDesc);
    drawChart(xArr,yArr,chartDesc);
}

出於某種原因,我可以在console.log看到xArryArr的值,但是我chartDesc is not definedchartDesc chartDesc is not defined chartDesc

如果我將console.log(chartDesc)行移動到此行下面var chartDesc = json.INFO.DESC我可以正確地看到它。

這是為什么?

您在AJAX回調函數中聲明了chartDesc變量,因此它超出了您以后引用它的范圍。

要解決此問題,請從行的開頭刪除var ,然后使用xArryArr變量將其聲明在函數的頂部:

var xArr = [];
var yArr = [];
var chartDesc = "";

chartDesc變量范圍與success函數相關聯,這就是為什么在變量函數之外,變量是undefined Javascript函數中為var定義的變量創建范圍

做你的

console.log(xArr);
console.log(yArr);

success功能。 並且在成功函數之外刪除chartDesc變量,

成功函數外部的控制台日志在調用函數時立即執行,但由於成功函數執行,插入xArryArr值需要一些時間。 所以你沒有得到任何記錄。

暫無
暫無

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

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