Когда клиент нажимает кнопку загрузки, отображается окно подтверждения с текстом, сколько осталось ежедневных загрузок (значение по умолчанию: 5 загрузок файлов в сутки). Как сделать с ajax, когда пользователь каждый раз нажимает на кнопку загрузки, не обновляя страницу, будет проверяться в базе данных, сколько файлов сегодня скачал пользователь и отображать это в диалоговом окне подтверждения? Все запросы к базе данных я написал, но я не знаю, как заставить его работать с ajax. Как эта функция должна работать:
- Пользователь нажимает на кнопку загрузки,
- Появляется диалоговое окно подтверждения с текстом: «Вы можете загрузить 5 бесплатных файлов. Осталось: 5» ,
- Пользователь нажимает «да» и загружает файл,
- Пользователь НЕ ОБНОВЛЯЕТ страницу и нажимает кнопку следующей загрузки,
- Появляется диалоговое окно подтверждения с текстом: «Вы можете скачать 5 бесплатных файлов. Слева: 4»
И так до тех пор, пока не будет исчерпан весь лимит бесплатной загрузки ...
Любая помощь будет очень полезной. Заранее спасибо.
Контроллер:
// Counting how much files a user today has downloaded.
public function TotalAndNotPayed($query){
$dayStart = Carbon::today();
$dayEnd = Carbon::tomorrow();
$total = DownloadHistory::where('user_id', auth()->user()->id)->
wherebetween('created_at', [$dayStart, $dayEnd])->distinct()->count('dataset');
return $total;
}
Маршруты:
//Routes
Route::get('/dump', 'DumpController@index');
Route::get('/dump-ajax', 'DumpController@TotalAndNotPayed');
// Download link
Route::get('pld-flash/{id}', 'DumpController@downloadFile')->name('dump.downloadFile');
Вид:
</table>
<tbody>
@foreach ($dumpDb as $key => $value)
<tr>
<td scope="row">
// dataset - file name
<a href="{{ Route('dump.downloadFile', ['id' => $value->dataset ]) }}" onclick="javascript:ConfirmDownload()" style="float:right;"><img src="{{asset('images/download.jpg')}}" alt=""></a>
@endif
</span>
</td>
</tr>
@endforeach
</tbody>
</table>
<script type="text/javascript">
function ConfirmDownload()
{
@if (Admin)
if(!confirm("Are you sure want to download this file?"))
{
event.preventDefault();
}
@else
//Auth::user()->dailyDownloads - database value, how much files per day a user can download.
if(!confirm("Are you sure want to download this file? Your daily download limit is: " + {{ Auth::user()->dailyDownloads }}) + ", left: " + {{App\Http\DumpController()}})
{
event.preventDefault();
}
@endif
}
</script>