Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery ajax-第二个数组推送不工作_Javascript_Jquery_Arrays_Ajax - Fatal编程技术网

Javascript jquery ajax-第二个数组推送不工作

Javascript jquery ajax-第二个数组推送不工作,javascript,jquery,arrays,ajax,Javascript,Jquery,Arrays,Ajax,我有这段代码,需要填充一个数组,该数组将在一些图表工具上使用。因此,有一个显示结果的按钮和一个复选框,使用户可以向数组中添加另一组行。我对数组使用.push(),它可以正常工作。现在的问题是,我第二次ajax调用的第二次推送没有将数据添加到数组中。这是我的密码: $.ajax({ type: "POST", url: "Default.aspx/GetSubCategorySalesPerTerritory", contentType: "application/json

我有这段代码,需要填充一个数组,该数组将在一些图表工具上使用。因此,有一个显示结果的按钮和一个复选框,使用户可以向数组中添加另一组行。我对数组使用
.push()
,它可以正常工作。现在的问题是,我第二次ajax调用的第二次推送没有将数据添加到数组中。这是我的密码:

$.ajax({
    type: "POST",
    url: "Default.aspx/GetSubCategorySalesPerTerritory",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {        
        $.each(response.d, function (i, val) {            
            var values = new Array(val.From, val.To, val.Thickness);            
            rows.push(values); //this one works
        });        

        if ($('#chkPromotion').is(":checked")) {            
            $.ajax({
                type: "POST",
                url: "Default.aspx/AddPromotion",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {                    
                    $.each(data.d, function (i, val) {                        
                        var values = new Array(val.From, val.To, val.Thickness);                        
                        rows.push(values); //this one fails                        
                        alert("pushed");
                    });                    
                },
                failure: function (data) {
                    alert(data.d);
                }
            });            
            drawChart(rows);
        } else {            
            drawChart(rows);
        }        
    },
    failure: function (response) {
        alert(response.d);
    }
});

我真的不知道为什么失败了。发生的情况是,即使满足条件并且第二个ajax调用成功,数组
行的内容仍然是第一个数组推送。代码有什么问题?

由于ajax的异步特性,您得到的结果实际上是预期的

您应该在第二个ajax调用的成功回调中调用该方法,如下所示

$.ajax({
    type: "POST",
    url: "Default.aspx/GetSubCategorySalesPerTerritory",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {        
        $.each(response.d, function (i, val) {            
            var values = new Array(val.From, val.To, val.Thickness);            
            rows.push(values); //this one works
        });        

        if ($('#chkPromotion').is(":checked")) {            
            $.ajax({
                type: "POST",
                url: "Default.aspx/AddPromotion",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {                    
                    $.each(data.d, function (i, val) {                        
                        var values = new Array(val.From, val.To, val.Thickness);                        
                        rows.push(values);
                    }); 
                    drawChart(rows); // here
                },
                failure: function (data) {
                    alert(data.d);
                }
            });            
        } else {            
            drawChart(rows);
        }        
    },
    failure: function (response) {
        alert(response.d);
    }
});

打开开发人员工具并检查netowrk部分中的响应。因此,您可以确保后端调用并获得正确的数据。这可能是缓存问题。将cache:false添加到ajax请求并检查。我认为它调用成功。我尝试将响应的串联值放在一个警报框中,结果显示出来。我还尝试将其放入另一个数组中,但仍然没有成功。这是您所期望的结果吗?是的,这是我一直期待的结果。当您不向服务器发送任何数据时,为什么会有POST请求和
contentType:“application/json;charset=utf-8”
?这实际上回答了我的问题。非常感谢。但是我不理解ajax的这种“异步性质”。@DustineTheGreat希望这能让您了解ajax的异步性质