我使用带有表单验证器的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';
}
}
答案 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