ajax data.success блок кода не выполняется (значение переменной) - PullRequest
3 голосов
/ 18 октября 2019

У меня большая проблема в обновлении запроса ajax. Если запрос ajax успешен, я хочу установить значение переменной равным 1, если не удастся, оставив его равным 0. Но моя программа не работает должным образом. Что такое проблема и как ее решить? проблема?

$(document).on('click', '.overtime_send', function() {
   temp = 0;
  $('#employee_table tbody tr').each(function(row, tr) {

    var emp_no = $(tr).find('td:eq(0)').text();
    var ot_hours = $(tr).find('input').val();

    //ot_array.push([emp_no,ot_hours]);

    $.ajax({
      url: 'otrequset_action.php',
      type: 'POST',
      data: { action:'add_ot',emp_no : emp_no, ot_hours:ot_hours},
      dataType:"json",
      success:function(data)
      {
        if(data.success)
        {
         swal("Good job!", "OverTime Request Send Successfully!", "success");
         temp = 1;
         dataTable.ajax.reload();  
        }
      }
    });  
  });
  alert(temp);//data.success alert display but value is still 0  
  if (temp == 1) {
$.ajax({
      url: 'otrequset_action.php',
      type: 'POST',
      data: { action:'add_comment'},
      dataType:"json",
      success:function(data)
      {
        if(data.success)
        {  
         dataTable.ajax.reload();
        }
      }
    });
}
     swal({title: "No data entering?",text: "Not set the overtime hours !",type: "warning"});

}); 

Ответы [ 3 ]

2 голосов
/ 18 октября 2019
(document).on('click', '.overtime_send', function() {
   temp = 0;
  $('#employee_table tbody tr').each(function(row, tr) {

    var emp_no = $(tr).find('td:eq(0)').text();
    var ot_hours = $(tr).find('input').val();

    //ot_array.push([emp_no,ot_hours]);

    $.ajax({
      url: 'otrequset_action.php',
      type: 'POST',
      data: { action:'add_ot',emp_no : emp_no, ot_hours:ot_hours},
      dataType:"json",
      success:function(data)
      {
         swal("Good job!", "OverTime Request Send Successfully!", "success");
         temp++;
         dataTable.ajax.reload();
           if (temp == 1) {
           $.ajax({
              url: 'otrequset_action.php',
              type: 'POST',
              data: { action:'add_comment'},
              dataType:"json",
              success:function(data)
              {
                if(data.success)
                {  
                 dataTable.ajax.reload();
              }
             }
          });
        }  
    }
   });  
});

   swal({title: "No data entering?",text: "Not set the overtime hours !",type: "warning"});

});
0 голосов
/ 18 октября 2019
$(document).on('click', '.overtime_send', function() {
    temp = 0;
    $('#employee_table tbody tr').each(function(row, tr) {
        var emp_no = $(tr).find('td:eq(0)').text();
        var ot_hours = $(tr).find('input').val();

        $.ajax({
            url: 'otrequset_action.php',
            type: 'POST',
            data: { action:'add_ot',emp_no : emp_no, ot_hours:ot_hours},
            dataType:"json",
            success:function(data) {
                if(data.success) {
                    swal("Good job!", "OverTime Request Send Successfully!", "success");

                    if (temp != 1) {
                        $.ajax({
                            url: 'otrequset_action.php',
                            type: 'POST',
                            data: { action:'add_comment'},
                            dataType:"json",
                            success:function(data) {
                                if(data.success) {
                                    dataTable.ajax.reload();
                                }
                            }
                        });
                    }

                    temp = 1;
                    dataTable.ajax.reload();
                }
            }
        });
  });

  swal({title: "No data entering?",text: "Not set the overtime hours !",type: "warning"});
});

Ajax будет выполнять функцию успеха только тогда, когда запрос будет успешным (что означает, что успех будет выполнен после задержки). Но оставшийся код будет работать, даже если ajax не завершен (асинхронное выполнение). К тому времени, когда вы распечатаете или используете его, оно все равно будет 0;

0 голосов
/ 18 октября 2019

Какова цель data.success, если условие в условии успеха первого запроса ajax. Вы настраиваете это в php-коде и возвращаетесь обратно?

success:function(data)
      {
        if(data.success)
        {
         swal("Good job!", "OverTime Request Send Successfully!", "success");
         temp = 1;
         dataTable.ajax.reload();  
        }
      }

Я не думаю, что вам нужно, если условие. Удалите это условие и попробуйте.

Кроме того, создайте функцию ошибки для обработки неуспешных случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...