Laravel 8 mews captcha每次返回无效



我在laravel 8中安装了mews captcha。一切都很好。Captcha每次都在加载。但是当我输入captcha表单时,它返回";给定的数据是无效的";在控制台中。这是我的控制器

public function FptEditReq(Request $request){
$request->validate([
'captcha' => 'required|captcha',
]);

$revision = fpt::find($request->id);
$revision->revision = '1';
$revision->save();
return response()->json('success');
}

这是我的视图代码

<form class="form-sample" id="captcha_form" method="post" action="javascript:void(0)">
@csrf
<div class="form-group mt-4 mb-4">
<div class="captcha">
<span>{!! captcha_img() !!}</span>
<button type="button" class="btn btn-danger" class="reload" id="reload">
&#x21bb;
</button>
</div>
</div>
<div class="form-group mb-4 col-sm-2">
<input id="captcha" type="text" class="form-control" placeholder="Enter Captcha" name="captcha" required="">
</div>                               

<button type="submit" class="btn btn-danger mr-2" id="editreq">Edit Request</button>

</form>

这在我的javascript中

$('#reload').click(function () {
$.ajax({
type: 'GET',
url: 'formation-plate-test/reload-captcha',
success: function (data) {
$(".captcha span").html(data.captcha);
}
});
});
$('body').on('click', '#editreq', function () {
var id = $('#captcha_form input[name="id"]').val();
$.post("{{route('fpt.editreq')}}",{
id:id,
},
function(data){
if (data=='success') {
location.reload(); 

}
})
});
在ajax返回后,您必须刷新captcha-div。
$('#reload').click(function () {
$.ajax({
type: 'GET',
url: 'formation-plate-test/reload-captcha',
success: function (data) {
$(".captcha span").html(data.captcha);
$(".captcha").load(window.location.href + " .captcha");
}
});
});

将此包用于您的laravel项目

composer require hpd/captcha

验证:

Route::post('captcha_check', function() {
$validator = validator()->make(request()->all(), 
['captcha' => 'required|captcha'];
);
if ($validator->fails()) {
echo '<p style="color: #ff0000;">Incorrect!</p>';
} else {
echo '<p style="color: #00ff00;">Matched </p>';
}
});

视图:

<div>
{{!! captcha_get_html()!!}}
</div>

最新更新