我有这个功能:

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 defined我却得到了chartDesc

如果将console.log(chartDesc)行移动到该行var chartDesc = json.INFO.DESC下,则可以正确看到它。

这是为什么?

最佳答案

您在AJAX回调函数中声明了chartDesc变量,因此该变量不在以后对其的引用范围之内。

要解决此问题,请从行首删除var,然后使用xArryArr变量在函数顶部声明它:

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

09-21 00:06