Как идти вперед в умном мастере после успеха AJAX - PullRequest
0 голосов
/ 25 октября 2018

Я хочу перейти к следующему шагу, если вызов ajax успешен, но я не могу вызвать методы smart wizard внутри вызова ajax.Мой код здесь.

var wizard = $("#listing_wizard").smartWizard({onLeaveStep:stepSubmit});

    //stepsubmit
    function stepSubmit(){
      var that = this;
      //that.goForward  ------- working here
      var step_no = this.curStepIdx+1;
      var form_data = $("#step_"+step_no+"_form").serialize();

      $.ajax({
        type:'post',
        url:"<?php echo URL_ADMIN ?>ajax.php",
        data:form_data,
        success:function(data){
          return that.goForward; //not working here
        }
      });
    }

Я думаю, что проблема здесь в этих "это", так как я могу вызвать умного мастера this.goForward после вызова ajax

1 Ответ

0 голосов
/ 26 октября 2018

Если вы используете последнюю версию Smart Wizard v4 , здесь есть обходной путь.

$('#listing_wizard').smartWizard();

$("#listing_wizard").on("leaveStep", function(e, anchorObject, stepNumber, stepDirection) {

  var form_data = $("#step_"+ stepNumber +"_form").serialize();

  $.ajax({
    type:'post',
    url:"<?php echo URL_ADMIN ?>ajax.php",
    data:form_data,
    success:function(data){
       // indicate the ajax has been done, release the next step
       $("#listing_wizard").smartWizard("next");
    }
  });

  // Return false to cancel the `leaveStep` event 
  // and so the navigation to next step which is handled inside success callback.
  return false;

});

Это уже решено на Как дождаться выполнения ajax для обработки следующего шага?
Также см. Документацию jQuery Smart Wizard 4: Документация

...