-6

ajax を使用して、部門名を配列に入力します。$.eachの間、departmentNameには値がありますが、ajaxの終了後、departmentNameをログに記録すると値がありません。

      $("#Search").click(function () {
            var titleId = $("#title").val();
            var departmentGenericId = $("#department").val();
            var startDate = $("#startDate").val();
            var endDate = $("#endDate").val();

            var departmentName = [];
            var complianceValue = [];
            var nonComplianceValue = [];
            var complianceRate = [];
            $.ajax({
                type: "GET",
                contentType: "application/json; charset=utf-8",
                url: '/AcknowledgementAdminLevel/AcknowledgemetnComplianceRate/',
                data: {"titleId": titleId, 
                    "departmentGenericId" : departmentGenericId, 
                    "startDate" : startDate,
                    "endDate" : endDate
                },
                dataType: "json",
                success: function (data) {                                       
                    $.each(data, function () {                            
                        departmentName.push(this.DepartmentName);
                        complianceValue.push(this.Compliance);
                        nonComplianceValue.push(this.NonCompliance);
                        complianceRate.push(this.ComplianceRate);                            
                    });
                }                   
            });               
            console.log(departmentName);               
        });       
4

1 に答える 1

0

ajax 呼び出しは非同期で呼び出されているため、console.log ステートメントが実行されたときに departmentName は取り込まれません。本当に必要な場合は、次のように async オプションを追加して、ajax 呼び出しを同期的に実行するように設定できます。

$.ajax({
        async: false,
        //...

オプションに。ajax 呼び出しは、実行を続行する前に応答を待ちます。

于 2013-09-10T11:54:15.067 に答える