Laravel получить значение из ajax запроса без обновления страницы - PullRequest
0 голосов
/ 27 апреля 2020

Когда клиент нажимает кнопку загрузки, отображается окно подтверждения с текстом, сколько осталось ежедневных загрузок (значение по умолчанию: 5 загрузок файлов в сутки). Как сделать с ajax, когда пользователь каждый раз нажимает на кнопку загрузки, не обновляя страницу, будет проверяться в базе данных, сколько файлов сегодня скачал пользователь и отображать это в диалоговом окне подтверждения? Все запросы к базе данных я написал, но я не знаю, как заставить его работать с ajax. Как эта функция должна работать:

  1. Пользователь нажимает на кнопку загрузки,
  2. Появляется диалоговое окно подтверждения с текстом: «Вы можете загрузить 5 бесплатных файлов. Осталось: 5» ,
  3. Пользователь нажимает «да» и загружает файл,
  4. Пользователь НЕ ОБНОВЛЯЕТ страницу и нажимает кнопку следующей загрузки,
  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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...