2013-09-10 6 views
-6

Я заполняю свое имя отдела в массиве с помощью ajax. во время $ .each имя_файла имеет значение, но после окончания ajax, когда я записываю имя раздела, у него нет значения.

 $("#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);    
     });  
+1

Этот еще один ... –

+1

Этот вопрос задают каждый день. Пожалуйста, сделайте поиск, прежде чем спрашивать. –

+0

Добро пожаловать в чудесный мир ** Async ** –

ответ

0

Аякса вызова вызывается асинхронно, поэтому departmentName не была заселена, когда выполнил console.log заявление. Вы можете установить вызов Ajax для выполнения синхронно, если вы действительно хотите, добавив опцию асинхронной следующим образом:

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

к опциям. Затем вызов ajax ожидает ответа до начала выполнения.

+0

Зачем отвечать, задолго до того, что мы связались с надлежащим QA при голосовании, чтобы закрыть? Кстати, это плохой ответ, не рекомендуется синхронизировать запросы. –

+1

Я ответил, потому что он спросил, и я хорошо знаю, что это плохая практика для использования запросов синхронизации, поэтому «Вы можете настроить вызов ajax для синхронного выполнения *, если вы действительно хотите * '- намочите свою шею - я бы ненавидел ТАК, чтобы стать как сообщество perl. – coalvilledave

Смежные вопросы