Hocam bir de a etiket kullandıgımdan sayfadaki tum a etiketleri etkilenmis. onu class icinde link e bağladım findorfail olarakda değişirdim. birde loader ekledim. Birde rate limiter ekledim. şuan çok iyi çalışıyor ellerinize sağlık. Nihai kodları aşağıda paylaşıyorum.
ROUTE
Route::post('/linksay', [FeedController::class, 'linksay'])->name('front.linksay')->middleware(['throttle:ajaxlimit']);
CONTROLLER
public function linksay(Request $request){
$id = $request->id;
$say = Bot::findOrFail($id)->increment('tiklasay');
return response()->noContent();;
}
JS
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(document).on("click", '.link', function(e){
e.preventDefault();
var dataId = (this.id);
let href = $(this).attr('href');
$.ajax({
url : "{{ route('front.linksay') }}",
type: 'POST',
data: {
"_method": 'POST',
"id": dataId,
"_token": '{{ csrf_token() }}',
},
success: function(resp) {
window.open( href, '_blank');
},
error: function(xhr, status, error, resp) {
alert('Bir hata oluştu. Çok fazla sayıda deneme yapmış olabilirsiniz.');
}
});
});
$(document).on({
ajaxStart: function(){
$("body").addClass("loading");
},
ajaxStop: function(){
$("body").removeClass("loading");
}
});
</script>
STYLE
<style>
.overlay{
display: none;
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 999;
background: rgba(255,255,255,0.6) url("{{ asset('image/loader.gif') }}") center no-repeat;
}
/* Turn off scrollbar when body element has the loading class */
body.loading{
display: block;
}
/* Make spinner image visible when body element has the loading class */
body.loading .overlay{
display: block;
}
</style>
LİNK ÖRNEĞİ
<a href="{{ $fee->url }}" id="{{$fee->id}}" class="link hover:underline" target="_blank">{{ $fee->baslik }}</a>
LOADER DİV
<div class="overlay"></div>
RATE LİMİTER
RateLimiter::for('ajaxlimit', function (Request $request) {
return $request->user()
? Limit::perMinute(20)->by($request->user()->id)
: Limit::perMinute(10)->by($request->ip());
});