jQuery步骤插件从Ajax成功进入下一步

时间:2019-03-06 07:40:46

标签: javascript jquery ajax jquery-steps

我使用带有表单验证器的jquery步骤插件来验证是否插入了输入(在所需列中不为空)并通过ajax响应(来自后端的检查值)进行验证。

目的:单击下一步并在ajax响应(返回true)后转到步骤1向导(从步骤0开始)

但是我坚持甚至将ajax返回true,但仍然无法继续下一步。即使我尝试输入中的“ gotvalue”也无法继续进行。

这是jquery代码:

var form = $("#redeem-form").show();

$.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            }
});

form.steps({
    headerTag: "h2",
    bodyTag: "section",
    transitionEffect: "slideLeft",
    labels: {
        finish: "Confirm and Redeem"
    },
    onStepChanging: function (event, currentIndex, newIndex)
    {   
        var x = $("#input_access_code").val();
        console.log(x);
        if (currentIndex === 0)
        {   
            $.ajax({
                type: "GET",
                url: "{{route('checkRedeem')}}",
                data: {'access_code':$("#input_access_code").val()},
                success: function(data)
                {
                    let datas = data;
                    console.log(datas);
                    if(datas == 'no'){
                        return false;
                    }
                    else{
                        return true;
                    }
                }
            });

        }
    },
    onStepChanged: function (event, currentIndex, priorIndex){...},
    onFinishing: function (event, currentIndex){...},
    onFinished: function (event, currentIndex){...}
});

这是laravel中的控制器:

public function checkRedeemCode(Request $request)
{
    $redeemCode = $request->access_code;

    if($redeemCode == "gotvalue"){
        return $redeemCode;
    }
    else{
        return 'no';
    }
}

1 个答案:

答案 0 :(得分:0)

原因在于您的ajax函数是异步的。请在ajax调用中添加Rails.application.config.middleware.insert_before Warden::Manager, ActionDispatch::Cookies Rails.application.config.middleware.insert_before Warden::Manager, ActionDispatch::Session::CookieStore