Старое значение отображается в обратном вызове AJAX - PullRequest
0 голосов
/ 26 июня 2019

У меня есть кнопка в моем веб-приложении. Когда пользователь нажимает на него, я хочу запросить подтверждение и выполнить некоторые действия в моей базе данных.

Я написал код, используя bootstrapconfirmation.js. Когда пользователь нажимает на эту кнопку, строка в БД становится активной / неактивной. Когда я нажимаю в первый раз, он работает нормально, но в следующий раз он не работает.

Во время отладки у меня есть переменная с именем value3. Когда я alert это в начале, он показывает правильное значение, но внутри AJAX, когда я alert, он дает мне предыдущее значение (когда он работал должным образом). Это не меняется. В чем может быть проблема?

<button type="button" class="active_inactive" data-category="<%=resultSet.getString(" category_id ")%>" value="Deactivate" onclick="process(this, '<%=resultSet.getString(" category_id ")%>', 'active_inactive', this.value)" title="Deactivate"><i class='fa fa-times'></i></button>
function process(thisobj, id, button_id, button_value) {
  var value, value1, value2, value3;
  if (button_value === "Activate") {
    value = "activation";
    value1 = "Activation";
    value2 = "activate";
    value3 = "Active";
  } else {
    value = "de-activation";
    value1 = "De-activation";
    value2 = "de-activate";
    value3 = "Inactive";
  }
  alert(value3);

  $.ajax({
    url: '../Category',
    context: thisobj,
    data: {
      "mode": "checkwarning",
      "category_id": id
    },
    dataType: "html",
    contentType: "application/json",
    type: 'GET',
    success: function() {
      $(thisobj).confirmation({
        container: 'body',
        placement: 'top',
        btnOkLabel: 'Confirm',
        title: 'Are you sure?',
        btnCancelLabel: 'Cancel',
        href: 'javascript:void(0)',
        onConfirm: function(thisobj, element) {
          $.ajax({
            url: '../Category',
            context: thisobj,
            data: {
              "category_id": id,
              "status": value3,
              "mode": button_id
            },
            dataType: "html",
            contentType: "application/json",
            type: 'GET',
            success: function() {
              if (button_value === "Deactivate") {
                swal({
                    title: "Deactivated!",
                    text: "De-activated the course category successfully.",
                    type: "success"
                  },
                  function() {

                  });
                element.closest('td').prev('td').text('Inactive');
                element.prop("title", "Activate");
                element.attr('value', 'Activate');
              } else {
                swal({
                    title: "Activated!",
                    text: "Activated the course category successfully.",
                    type: "success"
                  },
                  function() {

                  });
                element.closest('td').prev('td').text('Active');
                element.prop("title", "Deactivate");
                element.attr('value', 'Deactivate');
              }
              alert(value3);
              element.find('i').toggleClass('fa fa-times fa fa-check');
            },
            error: function() {
              swal("Error", "System Error: Could not " + value2 + " the category in the database. Please try again or report to the system admin.", "error");
            }
          });
        }
      }).confirmation('toggle');
    },
    error: function() {
      swal("Sorry!", "Cannot de-activate the category since it has active course(s) or assessment(s).", "error");
    }
  });
}
...